Уверен вам пригодится
[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;
Решение:
Просто сменить название или укоротить !
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
Руководитель проекта
-
#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
Пользователь
warning 219: local variable «name» shadows a variable at a preceding level
Проблема з new name,незнаю как ее еще можно заменить,знакомый кинул мод, исправить эти вареники.. и вот такая дура:0
PHP код:
(52) : warning 219: local variable "name" shadows a variable at a preceding level
(944) : warning 219: local variable "name" shadows a variable at a preceding level
(990) : warning 219: local variable "PlayerName" shadows a variable at a preceding level
(1155) : warning 215: expression has no effect
(3928) : warning 219: local variable "name" shadows a variable at a preceding level
(3942) : warning 219: local variable "name" shadows a variable at a preceding level
(3956) : warning 219: local variable "name" shadows a variable at a preceding level
(3971) : warning 219: local variable "name" shadows a variable at a preceding level
(3985) : warning 219: local variable "name" shadows a variable at a preceding level
(3999) : warning 219: local variable "name" shadows a variable at a preceding level
(4013) : warning 219: local variable "name" shadows a variable at a preceding level
(4027) : warning 219: local variable "name" shadows a variable at a preceding level
(4041) : warning 219: local variable "name" shadows a variable at a preceding level
(4061) : warning 219: local variable "name" shadows a variable at a preceding level
(4078) : warning 219: local variable "name" shadows a variable at a preceding level
(4092) : warning 219: local variable "name" shadows a variable at a preceding level
(4106) : warning 219: local variable "name" shadows a variable at a preceding level17 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. Как же его исправить? Этот варнинг говорит о том что вы не соблюдаете табуляцию в моде примерно вот так выглядит ваш код:
Как мы видим тут не соблюдена табуляцию. значит нам надо это исправить мы можем выделить весь текс нажать shift + tab и наш текс уедет назад:
После этого выделить текст и нажать Tab, и вот что у нас получится:
Мы выравняли полностью строку. Теперь у нас не будет этого варнинга. И всегда старайтесь соблюдать табуляцую!
Давайте рассмотрим такую ошибку как error 017: undefined symbol «PlayerInfo»
Что же означает этот error? Этот error означает что у вас нету переменной или же паблика или сток PlayerInfo, но в моем случаи это переменной так что если вы будете что-то вырезать из другого мода и встретит такой error то вы уже будет значить что из того мода из которого вы вырезали вам нужна искать или же паблик или сток PlayerInfo или же переменную и вставить в свой мод. Но но всегда это бывает успешно по этому вы можете вести в адресную строку названия паблика или же стока или же переменной и вы точно что-то найдете. Если не успешно пишите на форум.
fatal error 100: cannot read from file: «mxINI» , что означает эта ошибка? Это ошибка говорит вам о том что в папки pawnoinclude нету файла mxINI, где найти этот файл? В адресной строке браузера пишите скачать инклуд названия и вы найдете его таким способом.
Думаю на этом все! Если вы хотите чтобы я по чуть по чуть учил вас исправлять все виды ошибок и варнингов то жмите + тем самым вы скажите мне что вам зашла эта идея. и прошу пользователей форума которые уже знаю как исправлять ошибки скинуть пару ошибок и как их исправлять под этой темой.
Отредактировано 13 ноября, 2017 пользователем Pikachu