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

    Статус
    Оффлайн
    Регистрация
    01.08.2013
    Адрес
    Нижний Новгород
    Сообщений
    480
    Репутация:
    183 ±

    Исправление error/warning

    PRO-PAWN.RU
    Исправление error/warning.

    [Warning]
    %s- переменная
    Переменная - это хранилище данных, куда мы можем записывать
    различные данные для их последующего вызова. Тоесть действия с переменными предельно просты: запись информации,вывод и
    использование информации. Если присмотрется ближе, то список можно пополнить еще одним пунктом - объявление переменной.
    Каждая переменная имеет свое название, чтобы компилятор мог отличить друг от друга переменные, название мы задаем при
    объявлении. Оператор объявления переменной -
    new

     #1 | warning 219: local variable "%s" shadows a variable at a preceding level

    Код:
    warning 219: local variable "%s" shadows a variable at a preceding level
    Это значит что переменная дважды объявлена.
    Пример:
    PHP код:
    new TuRbO;
    new 
    TuRbO
    Что же нам делать, а вот что:
    - Мы можем одну из них удалить;
    - Можем изменить;

    Но не стоит забывать что при изменении переменной нам нужно заменить все что её касается
    вот пример правильного изменения:

    PHP код:
    new dronpic[1];
    dronpic CreatePickup(123921380.3220,-1771.3235,13.5469); 


     #2 | warning 217: loose indentation

    Код:
    warning 217: loose indentation
    Это значит что код не табулирован(код не построен лесенкой)
    Пример:
    PHP код:
    stock LSNews(color,const string[])
    {
    for(new 
    0MAX_PLAYERSi++){
    if(
    IsPlayerConnected(i)){
    if(!
    lNews[i]){
    SendClientMessage(icolorstring);}}}} 
    пример правильного табулирования
    PHP код:
    stock LSNews(color,const string[])
    {
        for(new 
    0MAX_PLAYERSi++)
        {
            if(
    IsPlayerConnected(i))
            {
                if(!
    lNews[i])
                {
                    
    SendClientMessage(icolorstring);
                }
            }
        }

    Что же делать? ответ прост
    - Мы можем делать все вручную
    - Можем поставить #pragma tabsize 0
    - Можем с помощи notepad++ все исправить (на форуме есть урок)

    pragma tabsize - Он просто маскирует эти warning и не более


     #3 | warning 235: public function lacks forward declaration %s

    Код:
    warning 235: public function lacks forward declaration %s
    Это означает что у функции нету forward
    Пример:
    Вы создали паблик
    PHP код:
    public Turbo() 
    И увас появляется этот варинг что же делать?
    ответ прост
    добавляем
    forward
    PHP код:
    forward Turbo();
    public 
    Turbo() 
    если вы не хотите каждый раз писать forward то можно сделать так:
    PHP код:
    #define public:%1(%2) forward %1(%2);
    public %1(%2
    и тогда новые паблики мы пишем так
    PHP код:
    public:Turbo() 


     #4 | warning 216: nested comment;

    Код:
    warning 216: nested comment ;
    Вот так это выглядит
    PHP код:
    /*case 458: //Fire&lvl 
    исправление
    PHP код:
    case 458//Fire&lvl 


     #5 | warning 213: tag mismatch

    Код:
    warning 213: tag mismatch
    Это означает не совпадения аргументов
    вот допустим самый простой случай:
    PHP код:
    #define CreateObject CreateDynamicObject
    #define MoveObject MoveDynamicObject 
    решение простое
    PHP код:
    #define CreateObject, CreateDynamicObject
    #define MoveObject,  MoveDynamicObject 


     #6 | warning 201: redefinition of constant/macro

    Код:
    warning 201: redefinition of constant/macro
    Это означает что в дефайнах(define)
    Пример:
    PHP код:
    #define OnPlayerEnterRaceCheckpoint
    #define OnPlayerEnterRaceCheckpoint 
    Решение одну из двух удалить


    7)
    Код:
    warning 200: symbol "%s" is truncated to 31 characters
    Это обозначает что мы при создании переменной ввели больше 31 символа
    Пример:
    PHP код:
    new sssssssssssssssssssssssssssssss
    Решение:
    Просто сменить название или укоротить !

    8)
    Код:
    warning 202: number of arguments does not match definition
    Это значит что у нас не совпадают аргументы
    Возьмем самый простой пример:
    PHP код:
    Create3DTextLabel("Текст",0xFFA500FF,.0120,456.2717,35.1719,20.0); 
    Наша ошибка содержится здесь:
    PHP код:
    -2041.0120,456.2717,35.1719,20.0 
    -2041.0120,456.2717,35.1719 // это на ша координата (Ширина,Длина,Высота,Радиус прорисовки текста)
    а вот 0 это у нас testLOS- линия видимости
    решение простое:
    Нам 0 нужно заменить на 1
    PHP код:
    Create3DTextLabel(" Текст",0xFFA500FF,1111.1111,111.1111,11.1111,20.1); 
    9)
    Код:
    warning 203: symbol is never used: %s
    Это означает что данный символ нигде не используется
    Пример :
    Создадим допустим переменную new respon;
    И тут у нас возникает
    Код:
    (1578) warning 203: symbol is never used: "respon"
    Что же делать?
    Ответ прост:
    найти эту переменную и удалить

    10)
    Код:
    warning 204: symbol is assigned a value that is never used %s
    Это значит что создали переменную и массив а он негде не используется
    Пример:
    PHP код:
    new blabal[15]; 
    Решения: просто удалить

    11)
    Код:
    warning 209: function "%s" should return a value
    Это значит что наша функция не возвращается(простыми словами нету return 1; или return 0
    пример:
    PHP код:
    public OnPlayerKeyStateChange(playeridnewkeysoldkeys

       if (
    newkeys == 1024
       { 
       
    OnPlayerCommandText(playerid,"/Blablabal"); 
       return 
    1// Вот наш return  ДО
       


    Решения:
    PHP код:
    public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
    {
       if (
    newkeys == 1024)
       {
       
    OnPlayerCommandText(playerid,"/Blablabal");
       }
       return 
    1// Вот наш return ПОСЛЕ

    [ERROR]
    1)
    Код:
    error 040: duplicate "case" label (value 28)
    это означает что case с таким значением повторяется
    Решение этой проблемы простое
    PHP код:
    case 28
    нам нужно цифру 28 изменит на другую (в той строчке на которую жалуется )

    2)
    Код:
    error 032: array index out of bounds (variable "JoinPed")
    Это означает что индекс массива превышен (но не всегда смотрим дальше)
    Пример:
    PHP код:
    new JoinPed[131][1] = { 
    131- массив поигравшись с ним я понял что дело не в нем, а вчёмже спросите вы?
    пример данной ошибки:
    PHP код:
    else if(SelectCharPlace[playerid] == 2) { SetPlayerSkin(playeridJoinPed[123][0]); SelectCharPlace[playerid] = 3InviteSkin[playerid] = JoinPed[98][0]; } 
    как видим
    JoinPed[123] с начало с таким значением, а потом JoinPed[98]
    Решение простое:
    JoinPed[123] число в данных скобках должно быть одинаковым.
    пример:
    PHP код:
    else if(SelectCharPlace[playerid] == 2) { SetPlayerSkin(playeridJoinPed[123][0]); SelectCharPlace[playerid] = 3InviteSkin[playerid] = JoinPed[123][0]; } 
    3)
    Код:
     error 037: invalid string (possibly non-terminated string)
    Это означает что строка неправильная а точнее где то допущена ошибка
    пример:
    PHP код:
    else if(PlayerInfo[targetid][pRank] == 4) { rangz "Зам.модера; } 
    как видим нам после слова "модера" не хватает "
    пример:
    PHP код:
    else if(PlayerInfo[targetid][pRank] == 4) { rangz "Зам.модера"; } 
    4)
    Код:
    error 001: expected token: ",", but found ";"
    Это значит что мы пропустили знак или скобку (в данном примере скобку)
    Пример:
    PHP код:
    public SaveProdykts()
    {
        new 
    idx;
        new 
    Filefile2;
        while (
    idx sizeof(ProdyktsInfo))
        {
            new 
    coordsstring[256];
            
    format(coordsstringsizeof(coordsstring), "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
            
    ProdyktsInfo[idx][prSous],
            
    ProdyktsInfo[idx][prPizza],
            
    ProdyktsInfo[idx][prMilk],
            
    ProdyktsInfo[idx][prJuice],
            
    ProdyktsInfo[idx][prSpirt],
            
    ProdyktsInfo[idx][prChicken],
            
    ProdyktsInfo[idx][prKolbasa],
            
    ProdyktsInfo[idx][prFish],
            
    ProdyktsInfo[idx][prIceCream],
            
    ProdyktsInfo[idx][prChips],
            
    ProdyktsInfo[idx][prZamProd];
            if(
    idx == 0)
            {
                
    file2 fopen("[prodykts]/prodykts.cfg"io_write);
            }
            else
            {
                
    file2 fopen("[prodykts]/prodykts.cfg"io_append);
            }
            
    fwrite(file2coordsstring);
            
    idx++;
            
    fclose(file2);
        }
        return 
    1;

    смотрим на
    Код:
    ProdyktsInfo[idx][prZamProd];
    и вим что мы ппропустили )
    и так оно выглядит
    Код:
    ProdyktsInfo[idx][prZamProd]);
    PHP код:
    public SaveProdykts()
    {
        new 
    idx;
        new 
    Filefile2;
        while (
    idx sizeof(ProdyktsInfo))
        {
            new 
    coordsstring[256];
            
    format(coordsstringsizeof(coordsstring), "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
            
    ProdyktsInfo[idx][prSous],
            
    ProdyktsInfo[idx][prPizza],
            
    ProdyktsInfo[idx][prMilk],
            
    ProdyktsInfo[idx][prJuice],
            
    ProdyktsInfo[idx][prSpirt],
            
    ProdyktsInfo[idx][prChicken],
            
    ProdyktsInfo[idx][prKolbasa],
            
    ProdyktsInfo[idx][prFish],
            
    ProdyktsInfo[idx][prIceCream],
            
    ProdyktsInfo[idx][prChips],
            
    ProdyktsInfo[idx][prZamProd]);// И вот наша скобка 
            
    if(idx == 0)
            {
                
    file2 fopen("[prodykts]/prodykts.cfg"io_write);
            }
            else
            {
                
    file2 fopen("[prodykts]/prodykts.cfg"io_append);
            }
            
    fwrite(file2coordsstring);
            
    idx++;
            
    fclose(file2);
        }
        return 
    1;

    5)
    Код:
     error 002: only a single statement (or expression) can follow each "case"
    Это означает что у вас после "case" идет if(dialogid == )
    Пример:
    PHP код:
    case 7507

        if(
    responseClothesSex[playerid] = 1
        else 
    ClothesSex[playerid] = 2
        
    ShowPlayerDialog(playerid,7504,2,"Покупка","Вы собираетесь купить телефон за 300$","Да","Нет"); 
        return 
    1


    if(
    dialogid == 7504)  // вот наша и ошибка 
        

            if(
    response
            { 
                  
    SetCameraBehindPlayer(playerid); TogglePlayerControllable(playerid1); 
                  
    SetPlayerSkin(playeridPlayerInfo[playerid][pModel]); 
                  
    ClothesRun[playerid] = 0
                return 
    1
            } 
    Решение простое:
    if(dialogid == 7504) это нам нужно заменить на case как и последующий диалог !
    PHP код:
    case 7504:  // вот так это выглядит
    {
        if(
    response)
        {
            
    SetCameraBehindPlayer(playerid);
              
    TogglePlayerControllable(playerid1);
            
    SetPlayerSkin(playeridPlayerInfo[playerid][pModel]);
             
    ClothesRun[playerid] = 0;
              return 
    1;
        } 
    6)
    Код:
    error 004: function "%s" is not implemented
    Это означает что мы пропустили скобку.
    Мой совет
    1)проверить весь код в ручную
    2)на форуме был урок как найти не по ставленую скобку
    3)Можно воспользоватся notepad++ там показы линии открытых скобок и тогда можно найти эту скобку

     #7

    Код:
    error 017: undefined symbol %s
    Это означает что мы не поставили переменную (new)
    Пример:
    Код:
    error 017: undefined symbol "dron4ik"
    Решение:
    Ко всем new добавим
    PHP код:
    new dron4ik


    By Dron_Turbo
    Последний раз редактировалось bredvix; 09.04.2014 в 23:06.

  2. 5 пользователя(ей) сказали cпасибо:
    $continue$ (16.07.2015) bizzle (16.03.2014) Daniel_Cortez (02.11.2013) Danny Marcelo (11.05.2020) roma282282 (04.02.2014)
 

 

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

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

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

Ваши права

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