Warning 219 как исправить

Уверен вам пригодится :P

[Waring]
%s- переменная

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

1)
PHP код:

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

Это значит что переменная дважды объявлена.
Пример:
PHP код:

new neka;
new neka

;
Что же нам делать, а вот что:
1) мы можем одну из них удалить;
2) можем изменить;

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

 new neka1;
    neka1 = CreatePickup(1239, 2, 1380.3220,-1771.3235,13.5469); 

2)
PHP код:

warning 217: loose indentation

Это значит что код не табулирован(код не построен лесенкой)
Пример:

PHP код:

stock LSNews(color,const string[])
{
for(new i = 0; i < MAX_PLAYERS; i++){
if(IsPlayerConnected(i)){
if(!lNews[i]){
SendClientMessage(i, color, string);}}}}

пример правильного табулирования

PHP код:

stock LSNews(color,const string[])
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(!lNews[i])
            {
                SendClientMessage(i, color, string);
            }
        }
    }
}  

Что же делать? ответ прост
1) мы можем делать все вручную
2) можем поставить

#pragma tabsize 0

3) можем с помощи notepad++ все исправить (на форуме есть урок)

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

3)
PHP код:

warning 235: public function lacks forward declaration %s

Это означает что у функции нету forward
Пример:
Вы создали паблик
PHP код:

public lol()

И увас появляется этот варинг что же делать?
ответ прост
добавляем forward
PHP код:

forward lol();
public lol()  

если вы не хотите каждый раз писать forward то можно сделать так:
PHP код:

#define public:%1(%2) forward %1(%2);
public %1(%2) 

и тогда новые паблики мы пишем так
PHP код:

public:lol()

4)
PHP код:

warning 216: nested comment ;

Вот так это выглядит
PHP код:

/*case 458: //Fire&lvl  
исправление 
PHP код:
case 458: //Fire&lvl 

5)
PHP код:

warning 213: tag mismatch 

Это означает не совпадения аргументов
вот допустим самый простой случай:

PHP код:

#define CreateObject CreateDynamicObject
#define MoveObject MoveDynamicObject

решение простое

PHP код:

#define CreateObject, CreateDynamicObject
#define MoveObject,  MoveDynamicObject  

6)
PHP код:

warning 201: redefinition of constant/macro

Это означает что в дефайнах(define)
Пример:
PHP код:

#define OnPlayerEnterRaceCheckpoint
#define OnPlayerEnterRaceCheckpoint

Решение одну из двух удалить!
7)

PHP код:

warning 200: symbol "%s" is truncated to 31 characters

Это обозначает что мы при создании переменной ввели больше 31 символа
Пример:
PHP код:

new sssssssssssssssssssssssssssssss; 

Решение:
Просто сменить название или укоротить !
8)

PHP код:

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--------- это на ша координата (она нас не интересует)
20.0--------вот наша ошибка (20----это расстояние с которого наш текст будет виден)
а вот 0 это у нас testLOS- линия видимости 

решение простое:
Нам 0 нужно заменить на 1
PHP код:

Create3DTextLabel(" ТУт типо текст .",0xFFA500FF,1111.1111,111.1111,11.1111,20.1);

9)

PHP код:

warning 203: symbol is never used: %s

Это означает что данный символ нигде не используется
Пример :
Создадим допустим переменную

new respon;

И тут у нас возникает
PHP код:

(1578) warning 203: symbol is never used: "respon"

Что же делать?
Ответ прост:
найти эту переменную и удалить

10)
PHP код:

warning 204: symbol is assigned a value that is never used %s

Это значит что создали переменную и массив а он негде не используется
Пример:
PHP код:

new blabal[15]; 

Решения: просто удалить

11)
PHP код:

warning 209: function "%s" should return a value 

Это значит что наша функция не возвращается(простыми словами нету return 1; или return 0
пример:

PHP код:

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

Решения:
PHP код:

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
   if (newkeys == 1024)
   {
   OnPlayerCommandText(playerid,"/Blablabal");
   }
   return 1; <========Вот наш return ПОСЛЕ
}  

[Error]

1)
PHP код:

error 040: duplicate "case" label (value 28) 

это означает что case стаким значением повторяется
Решение этой проблемы простое
PHP код:

case 28:
case 28: 

нам нужно цифру 28 изменит на другую (в той строчке на которую жалуется )

2)
PHP код:

error 032: array index out of bounds (variable "JoinPed")

Это означает что индекс массива превышен (но не всегда смотрим дальше)
Пример:
PHP код:

new JoinPed[131][1] = {

131- массив поигравшись с ним я понял что дело не в нем, а в чём-же спросите вы?
пример данной ошибки:
PHP код:

 else if(SelectCharPlace[playerid] == 2) { SetPlayerSkin(playerid, JoinPed[123][0]); SelectCharPlace[playerid] = 3; InviteSkin[playerid] = JoinPed[98][0]; }

как видим
JoinPed[123] с начало с таким значением, а потом JoinPed[98]
Решение простое:
JoinPed[123] число в данных скобках должно быть одинаковым.
пример:
PHP код:

else if(SelectCharPlace[playerid] == 2) { SetPlayerSkin(playerid, JoinPed[123][0]); SelectCharPlace[playerid] = 3; InviteSkin[playerid] = JoinPed[123][0]; }

3)
PHP код:

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)
PHP код:

error 001: expected token: ",", but found ";"

Это значит что мы пропустили знак или скобку (в данном примере скобку)
Пример:

PHP код:

public SaveProdykts()
{
    new idx;
    new File: file2;
    while (idx < sizeof(ProdyktsInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%dn",
        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(file2, coordsstring);
        idx++;
        fclose(file2);
    }
    return 1;
}  

смотрим на
PHP код:

ProdyktsInfo[idx][prZamProd];

и вим что мы пропустили )
и так оно выглядит
PHP код:

ProdyktsInfo[idx][prZamProd]);

PHP код:

public SaveProdykts()
{
    new idx;
    new File: file2;
    while (idx < sizeof(ProdyktsInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%dn",
        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(file2, coordsstring);
        idx++;
        fclose(file2);
    }
    return 1;
}  

5)

PHP код:

error 002: only a single statement (or expression) can follow each "case"

Это означает что у вас после «case» идет if(dialogid == )
Пример:
PHP код:

 case 7507: 
    { 
        if(response) ClothesSex[playerid] = 1; 
        else ClothesSex[playerid] = 2; 
        ShowPlayerDialog(playerid,7504,2,"??????? ??????","{A0B0D0}?????????? ?????? {7CC000}300$n{A0B0D0}??????? ?????? {7CC000}300$n{A0B0D0}???????????? ?????? {7CC000}300$n{A0B0D0}?????","???????","?????"); 
        return 1; 
    } 
if(dialogid == 7504)  <------------------- вот наша и ошибка 
    { 
        if(response) 
        { 
              SetCameraBehindPlayer(playerid); TogglePlayerControllable(playerid, 1); 
              SetPlayerSkin(playerid, PlayerInfo[playerid][pModel]); 
              ClothesRun[playerid] = 0; 
            return 1; 
        }  

Решение простое:
if(dialogid == 7504) это нам нужно заменить на case как и последующий диалог !

PHP код:

case 7504:  <------------------- вот так это выглядит
    { 
        if(response) 
        { 
              SetCameraBehindPlayer(playerid); TogglePlayerControllable(playerid, 1); 
              SetPlayerSkin(playerid, PlayerInfo[playerid][pModel]); 
              ClothesRun[playerid] = 0; 
            return 1; 
        }  

6)
PHP код:

error 004: function "%s" is not implemented 

Это означает что мы пропустили скобку.
Мой совет
1)проверить весь код в ручную
2)на форуме был урок как найти не по ставленую скобку
3)Можно воспользоватся notepad++ там показы линии открытых скобок и тогда можно найти эту скобку

7)
PHP код:

error 017: undefined symbol %s

Это означает что мы не поставили переменную (new)
Пример:
PHP код:

error 017: undefined symbol "lol"

Решение:
Ко всем new добавим
PHP код:

new lol;

  • #2

А до этого не было?Что добавляли/удаляли в моде?

Amfy

Гость


  • #3

Ну, значит есть глобальный массив, его и нужно убрать.

  • #4

А до этого не было?Что добавляли/удаляли в моде?

До этого все было идеально, началось вот буквально сегодня. Вчера ночью спать уходил, компилировал — все нормально было.

Ошибку даже в sscanf2 показывает, как ни странно.

Ну, значит есть глобальный массив, его и нужно убрать.

ну тк, а как выявить местонахождения данного массива?

  • #5

Варнинг выглядит так: «warning 219: local variable «%s» shadows a variable at a preceding level»
Разберем, что это означает на русском языке: «предупреждение 219: локальная переменная «%s» заслоняет переменную на предыдущем уровне (глобальную)»
Это случается из за того, что глобальная переменная (которая стоит в начале кода) по названию совпадает в локальной переменной (которая стоит где то посередине), и мод не понимает, какую переменную ему использовать.
Чтобы убрать этот варнинг нужно всего лишь переименовать локальную переменную.

(с)Grant777

  • #6

Варнинг выглядит так: «warning 219: local variable «%s» shadows a variable at a preceding level»

Разберем, что это означает на русском языке: «предупреждение 219: локальная переменная «%s» заслоняет переменную на предыдущем уровне (глобальную)»

Это случается из за того, что глобальная переменная (которая стоит в начале кода) по названию совпадает в локальной переменной (которая стоит где то посередине), и мод не понимает, какую переменную ему использовать.

Чтобы убрать этот варнинг нужно всего лишь переименовать локальную переменную.

(с)Grant777

Умно, но, я уже сказал выше, что при удалении переменной возникают 4-5 ошибок, которые можно исправить лишь добавлением этой же переменной.

  • #7

допустим вот твоя локальная переменная

new string[144];

а далее идет форматирование строки и вывод ее игроку в чат

format(string, sizeof(string), «::: %s выигрывает с %d убийствами.»,killer,PaintballWinnerKills);
SendClientMessage(playerid, COLOR_YELLOW, string);

чтобы убрать варнинг «warning 219: local variable «%s» shadows a variable at a preceding level«

нужно в данном скрипте переименовать переменную там где она объявляется и там где используется.

в итоге должно получиться что-то типа этого

Код:

format(string111, sizeof(string111), "::: %s выигрывает с  %d убийствами.",killer,PaintballWinnerKills);
SendClientMessage(playerid, COLOR_YELLOW, string111);

Mirex

Mirex

Руководитель проекта


  • #8

У вас переменная объявлена глобально, соответственно, при удалении этой переменной, в тех местах где возникают ошибки, нужно создать локальную переменную.

  • #9

Перерыл все переменные new string, и правда, одну объявил после скобок :)

  • #1

при компиляции плагина выходит ошибка 219!

  • new client = ReadPackCell(dp) в трех местах появляется ошибка 219
  • на что поменять ? new client = ReadPackCell(dp)
  • чтоб не повторялись
  • new client = GetClientOfUserId(GetEventInt(event, «userid») это тоже повторяеться
  • плагин сам [Z:R] Zombie Ability (Способности для Зомби)
  • Кто разбирается помогите плиз

  • #2

при компиляции плагина выходит ошибка 219!

  • new client = ReadPackCell(dp) в трех местах появляется ошибка 219
    на что поменять ? new client = ReadPackCell(dp)
    чтоб не повторялись

    new client = GetClientOfUserId(GetEventInt(event, «userid») это тоже повторяеться
    плагин сам [Z:R] Zombie Ability (Способности для Зомби)
    Кто разбирается помогите плиз

Скрин ошибки прикрепи.

  • #3

@tima4502, Это не ошибка , а предупреждение

  • warning 219: local variable «%s» shadows a variable at a preceding level — локальная переменная «%s» встречается на предыдущем уровне;

  • Команда форума
  • #4

  • Команда форума
  • #5


16.11.2014, 18:21


#1

Аватар для anarchy

Пользователь


warning 219: local variable «name» shadows a variable at a preceding level

Проблема з new name,незнаю как ее еще можно заменить,знакомый кинул мод, исправить эти вареники.. и вот такая дура:0

PHP код:


(52) : warning 219local variable "name" shadows a variable at a preceding level
(944) : warning 219local variable "name" shadows a variable at a preceding level
(990) : warning 219local variable "PlayerName" shadows a variable at a preceding level
(1155) : warning 215expression has no effect
(3928) : warning 219local variable "name" shadows a variable at a preceding level
(3942) : warning 219local variable "name" shadows a variable at a preceding level
(3956) : warning 219local variable "name" shadows a variable at a preceding level
(3971) : warning 219local variable "name" shadows a variable at a preceding level
(3985) : warning 219local variable "name" shadows a variable at a preceding level
(3999) : warning 219local variable "name" shadows a variable at a preceding level
(4013) : warning 219local variable "name" shadows a variable at a preceding level
(4027) : warning 219local variable "name" shadows a variable at a preceding level
(4041) : warning 219local variable "name" shadows a variable at a preceding level
(4061) : warning 219local variable "name" shadows a variable at a preceding level
(4078) : warning 219local variable "name" shadows a variable at a preceding level
(4092) : warning 219local variable "name" shadows a variable at a preceding level
(4106) : warning 219local variable "name" shadows a variable at a preceding level

17 Warnings




Строки:

944 new name [MAX_PLAYER_NAME];
990 new cont, PlayerName[MAX_PLAYER_NAME];
1155 PlayerInfo[giveplayerid][pMoney] +- moneys;


Всем доброе времени суток пользователям pawno-rus, сегодня я хочу чуть научить начинающих людей исправлять известные ошибки и варнинги и самые простые, но эти ошибки и варнинги очень часть встречаются. Давайте  начнем. 
warning 219: local variable «string1» shadows a variable at a preceding level
 

new string1[50];
format(string1, sizeof(string1), «Имя: %s», PlayerInfo[playerid][pName]);
SendClientMessage(playerid,-1, string);

На примере у нас варнинг ругается на эту строку. Как же её исправить ? Чтобы его исправить нам достаточно до писать ко всем string1 (_1) или же без разница можно и (_2 и тд…) вот так это будет выгладить:
 

new string1_1[50];
format(string1_1, sizeof(string1_1), «Имя: %s», PlayerInfo[playerid][pName]);
SendClientMessage(playerid,-1, string_1);

Но не забывайте это был пример и ошибки бывают в стоках пабликах и тд… И помните всегда самая первая { -< это начало паблика или же стока} — < а самая последние это конец. 
теперь давайте рассмотрим warning 217: loose indentation. Как же его исправить? Этот варнинг говорит о том что вы не соблюдаете табуляцию в моде примерно вот так выглядит ваш код: 
 

5a09a60f82f54_.png.47e23001438b9ac82c150cef74adf987.png

Как мы видим тут не соблюдена табуляцию. значит нам надо это исправить мы можем выделить весь текс нажать shift + tab и наш текс уедет назад:
 

5a09a688c3286_.png.b6f72169cbc197eb562769d1bd31557a.png

После этого выделить текст и нажать Tab, и вот что у нас получится:

5a09a6e38a389_.png.8d4cd9030dfe1a887c2af85efac04345.png

Мы выравняли полностью строку. Теперь у нас не будет этого варнинга. И всегда старайтесь соблюдать табуляцую!
Давайте рассмотрим такую ошибку как error 017: undefined symbol «PlayerInfo»
Что же означает этот error? Этот error означает что у вас нету переменной или же паблика или сток PlayerInfo, но в моем случаи это переменной так что если вы будете что-то вырезать из другого мода и встретит такой error то вы уже будет значить что из того мода из которого вы вырезали вам нужна искать или же паблик или сток PlayerInfo или же переменную и вставить в свой мод. Но но всегда это бывает успешно по этому вы можете вести в адресную строку названия паблика или же стока или же переменной и вы точно что-то найдете. Если не успешно пишите на форум. 
 fatal error 100: cannot read from file: «mxINI» , что означает эта ошибка? Это ошибка говорит вам о том что в папки pawnoinclude нету файла mxINI, где найти этот файл? В адресной строке браузера пишите скачать инклуд названия и вы найдете его таким способом. 
Думаю на этом все! Если вы хотите чтобы я по чуть по чуть учил вас исправлять все виды ошибок и варнингов то жмите + тем самым вы скажите мне что вам зашла эта идея. и прошу пользователей форума которые уже знаю как исправлять ошибки скинуть пару ошибок и как их исправлять под этой темой.  

Отредактировано 13 ноября, 2017 пользователем Pikachu

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Еирц как найти абонентский номер
  • Метод координат как найти середину отрезка
  • Service tag dell как найти
  • Как составить каталог фиалок
  • Антивирус блокирует камеру как исправить

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии