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

Description: Основы скриптинга
Moderator: SJplayer

SJplayer M
Topic author, Модератор
Модератор
Avatar
SJplayer M
Topic author, Модератор
Модератор
Posts: 196
Joined: 25 May 2013
With us: 11 years 6 months

#1by SJplayer » 31 May 2013, 10:11

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

Значение Warning можно посмотреть .

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

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

Code: Select all

new fast;
new fast;


Что делать?
1. мы можем одну из них удалить;
2. можем изменить;

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

Code: Select all

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


warning 217 wrote:warning 217: loose indentation

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

Code: Select all

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


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

Code: Select all

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


Можем выровнять все вручную или поставить:

Code: Select all

#pragma tabsize 0      


или при помощи все исправить. pragma tabsize - просто маскирует эти warning и не более.

warning 235 wrote:warning 235: public function lacks forward declaration %s

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

Code: Select all

public lois()


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

Code: Select all

forward lois();


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

Code: Select all

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


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

Code: Select all

public:lois()


warning 216 wrote:warning 216: nested comment ;

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

Code: Select all

/*case 58: //Fire&lvl


исправление:

Code: Select all

case 58: //Fire&lvl      


warning 213 wrote:warning 213: tag mismatch

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

Code: Select all

#define CreateObject CreateDynamicObject
#define MoveObject MoveDynamicObject      


решение:

Code: Select all

#define CreateObject, CreateDynamicObject
#define MoveObject,  MoveDynamicObject      


warning 201 wrote:warning 201: redefinition of constant/macro

Двойное определение одинаковой константы define:

Code: Select all

#define OnPlayerEnterRaceCheckpoint
#define OnPlayerEnterRaceCheckpoint      


исправление - одну удалить:

Code: Select all

#define OnPlayerEnterRaceCheckpoint      


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

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

Code: Select all

new sssssssssssssssssssssssssssssss;


Решение - сменить название или укоротить.

warning 202 wrote:warning 202: number of arguments does not match definition

Это значит что у нас не совпадают аргументы. Возьмем самый простой пример:

Code: Select all

Create3DTextLabel(" Текст .",0xFFA500FF,.0120,456.2717,35.1719,20.0);


Наша ошибка:

Code: Select all

-2041.0120,456.2717,35.1719,20.0  
-2041.0120,456.2717,35.1719--------- это на ша координата (она нас не интересует)
20.0--------вот наша ошибка (20----это расстояние с которого наш текст будет виден)
а вот 0 это у нас testLOS- линия видимости


Нам 0 нужно заменить на 1

Code: Select all

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


warning 203 wrote:warning 203: symbol is never used: %s

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

Code: Select all

new respon;


И тут у нас возникает вопрос?:

Code: Select all

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


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

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

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

Code: Select all

new babai[15];


Решение - просто удалить.

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

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

Code: Select all

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


Решение:

Code: Select all

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


  • Similar Topics
    Replies
    Views
    Last post

Return to “Основы скриптинга”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest