PDA

Просмотр полной версии : Исправление error/warning



bredvix
01.11.2013, 17:48
PRO-PAWN.RU

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





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



warning 219: local variable "%s" shadows a variable at a preceding level
Это значит что переменная дважды объявлена.
Пример:

new TuRbO;
new TuRbO;
Что же нам делать, а вот что:
- Мы можем одну из них удалить;
- Можем изменить;

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


new dronpic[1];
dronpic = CreatePickup(1239, 2, 1380.3220,-1771.3235,13.5469);



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

stock LSNews(color,const string[])
{
for(new i = 0; i < MAX_PLAYERS; i++){
if(IsPlayerConnected(i)){
if(!lNews[i]){
SendClientMessage(i, color, string);}}}}
пример правильного табулирования

stock LSNews(color,const string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(!lNews[i])
{
SendClientMessage(i, color, string);
}
}
}
}
Что же делать? ответ прост
- Мы можем делать все вручную
- Можем поставить #pragma tabsize 0
- Можем с помощи notepad++ все исправить (на форуме есть урок)
pragma tabsize - Он просто маскирует эти warning и не более



warning 235: public function lacks forward declaration %s
Это означает что у функции нету forward
Пример:
Вы создали паблик

public Turbo()
И увас появляется этот варинг что же делать?
ответ прост
добавляем forward


forward Turbo();
public Turbo()
если вы не хотите каждый раз писать forward то можно сделать так:


#define public:%1(%2) forward %1(%2);
public %1(%2)
и тогда новые паблики мы пишем так

public:Turbo()



warning 216: nested comment ;
Вот так это выглядит


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

case 458: //Fire&lvl



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


#define CreateObject CreateDynamicObject
#define MoveObject MoveDynamicObject
решение простое


#define CreateObject, CreateDynamicObject
#define MoveObject, MoveDynamicObject



warning 201: redefinition of constant/macro
Это означает что в дефайнах(define)
Пример:


#define OnPlayerEnterRaceCheckpoint
#define OnPlayerEnterRaceCheckpoint
Решение одну из двух удалить

7)

warning 200: symbol "%s" is truncated to 31 characters
Это обозначает что мы при создании переменной ввели больше 31 символа
Пример:

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

8)

warning 202: number of arguments does not match definition
Это значит что у нас не совпадают аргументы
Возьмем самый простой пример:

Create3DTextLabel("Текст",0xFFA500FF,.0120,456.2717,35.1719,20.0);
Наша ошибка содержится здесь:

-2041.0120,456.2717,35.1719,20.0
-2041.0120,456.2717,35.1719 // это на ша координата (Ширина,Длина,Высота,Радиус прорисовки текста)
а вот 0 это у нас testLOS- линия видимости
решение простое:
Нам 0 нужно заменить на 1

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
Это значит что создали переменную и массив а он негде не используется
Пример:

new blabal[15];
Решения: просто удалить

11)

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


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


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

[ERROR]
1)

error 040: duplicate "case" label (value 28)
это означает что case с таким значением повторяется
Решение этой проблемы простое


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

2)

error 032: array index out of bounds (variable "JoinPed")
Это означает что индекс массива превышен (но не всегда смотрим дальше)
Пример:

new JoinPed[131][1] = {
131- массив поигравшись с ним я понял что дело не в нем, а вчёмже спросите вы?
пример данной ошибки:


else if(SelectCharPlace[playerid] == 2) { SetPlayerSkin(playerid, JoinPed[123][0]); SelectCharPlace[playerid] = 3; InviteSkin[playerid] = JoinPed[98][0]; }
как видим
JoinPed[123] с начало с таким значением, а потом JoinPed[98]
Решение простое:
JoinPed[123] число в данных скобках должно быть одинаковым.
пример:


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

3)

error 037: invalid string (possibly non-terminated string)
Это означает что строка неправильная а точнее где то допущена ошибка
пример:

else if(PlayerInfo[targetid][pRank] == 4) { rangz = "Зам.модера; }
как видим нам после слова "модера" не хватает "
пример:

else if(PlayerInfo[targetid][pRank] == 4) { rangz = "Зам.модера"; }

4)

error 001: expected token: ",", but found ";"
Это значит что мы пропустили знак или скобку (в данном примере скобку)
Пример:


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,%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(file2, coordsstring);
idx++;
fclose(file2);
}
return 1;
}
смотрим на

ProdyktsInfo[idx][prZamProd];
и вим что мы ппропустили )
и так оно выглядит

ProdyktsInfo[idx][prZamProd]);


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,%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(file2, coordsstring);
idx++;
fclose(file2);
}
return 1;
}

5)

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


case 7507:
{
if(response) ClothesSex[playerid] = 1;
else ClothesSex[playerid] = 2;
ShowPlayerDialog(playerid,7504,2,"Покупка","Вы собираетесь купить телефон за 300$","Да","Нет");
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 как и последующий диалог !


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

6)

error 004: function "%s" is not implemented
Это означает что мы пропустили скобку.
Мой совет
1)проверить весь код в ручную
2)на форуме был урок как найти не по ставленую скобку
3)Можно воспользоватся notepad++ там показы линии открытых скобок и тогда можно найти эту скобку



error 017: undefined symbol %s
Это означает что мы не поставили переменную (new)
Пример:

error 017: undefined symbol "dron4ik"
Решение:
Ко всем new добавим

new dron4ik;

By Dron_Turbo