Как исправить ошибку error 029 invalid expression assumed zero


#1

Пользователь офлайн
 

Отправлено 20 июля 2014 — 18:10

  • Прохожий

вот в нескольких строках этот Error помогите пожалуйста , я новичок :)

error 029: invalid expression, assumed zero

вот проблемные строки

if(dialogid == 3))
PlayerInfo[playerid][pSex] = 1;
ChangeFirstSkin[playerid] = 0;

при чём в последней строке аж два Errora 029

0



#2

Отправлено 20 июля 2014 — 18:12

  • Новичок

Помоему это:

if(dialogid == 3))

Стоить заменить вот на это

if(dialogid == 3)
{
        PlayerInfo[playerid][pSex] = 1;
        ChangeFirstSkin[playerid] = 0;
.. и что там дальше у тебя пошло ...

0



#3

Отправлено 20 июля 2014 — 18:34

  • Прохожий

после полного прописывания кода теперь эти же проблемы но в других строках

(247) : error 029: invalid expression, assumed zero
(256) : error 029: invalid expression, assumed zero
(269) : error 029: invalid expression, assumed zero
(278) : error 029: invalid expression, assumed zero
(292) : error 029: invalid expression, assumed zero
(293) : error 029: invalid expression, assumed zero
(293) : error 029: invalid expression, assumed zero
(293) : error 029: invalid expression, assumed zero

а вот сам код с проблемными строками

247 -  if(PlayerInfo[playerid][Sex] == 1)

256 - if(PlayerInfo[playerid][Sex] == 2)

269 - if(PlayerInfo[playerid][Sex] == 1)

278 - if(PlayerInfo[playerid][Sex] == 2)

292 - PlayerInfo[playerid][pModel] = GetPlayerSkin(playerid);

293 - TutTime([playerid])) = 0; PlayerInfo([playerid][pTut])) = 1;

как видите в 293 строке аж 3 Errora одних и тех же , подскажите как исправить

0



#4

Отправлено 20 июля 2014 — 18:39

  • Новичок

if(dialogid == 3)
всё что идёт после этой проверки кинь сюда

0



#5

Отправлено 20 июля 2014 — 18:52

  • Прохожий

Просмотр сообщенияNewLife (20 июля 2014 — 18:39) писал:

if(dialogid == 3)
всё что идёт после этой проверки кинь сюда

вот

if(dialogid == 3))
{
        if(response)
        {
                SetPlayerPos(playerid,204.6633,-6.5563,1001.2109);
                SetPlayerFacingAngle(playerid, 299.4084);
                SetPlayerCameraPos(playerid,208.7765,-3.9595,1001.2178);
                SetPlayerCameraLookAt(playerid,204.6633,-6.5563,1001.2109);
                PlayerInfo[playerid][pSex] = 1;
                SendClientMessage(playerid, COLOR_RED, "Используйте клавишу 'Быстрый бег' (пробел по умолчанию)");
                SendClientMessage(playerid, COLOR_RED, "Используйте клавишу 'Вверх, Вниз' (W,S по умолчанию)");
                ChangeFirstSkin([playerid])) = 0;
                new ldl = playerid+1;
                SetPlayerVirtualWorld(playerid,ldl);
                SetPlayerSkin(playerid,SkinMen[0]);
                ShowMenuForPlayer(bomj0, playerid);
                TogglePlayerControllable(playerid, 0);
                SetPlayerInterior(playerid,5);
                 return 0;
        }
        else
        {
                SetPlayerPos(playerid,204.6633,-6.5563,1001.2109);
                SetPlayerFacingAngle(playerid, 299.4084);
                SetPlayerCameraPos(playerid,208.7765,-3.9595,1001.2178);
                SetPlayerCameraLookAt(playerid,204.6633,-6.5563,1001.2109);
                PlayerInfo[playerid][pSex] = 2;
                SendClientMessage(playerid, COLOR_RED, "Используйте клавишу 'Быстрый бег' (пробел по умолчанию)");
                SendClientMessage(playerid, COLOR_RED, "Используйте клавишу 'Вверх, Вниз' (W,S по умолчанию)");
                ChangeFirstSkin[playerid] = 0;
                new ldl = playerid+1;
                SetPlayerVirtualWorld(playerid,ldl);
                SetPlayerSkin(playerid,SkinGirl[0]);
                ShowMenuForPlayer(bomj0, playerid);
                TogglePlayerControllable(playerid, 0);
                SetPlayerInterior(playerid,5);
                return 0;
        }
    }

0



#6

Отправлено 20 июля 2014 — 18:57

  • Новичок

if(dialogid == 3))

скобку убери одну

0



#7

Отправлено 20 июля 2014 — 19:07

  • Прохожий

Просмотр сообщенияNewLife (20 июля 2014 — 18:57) писал:

if(dialogid == 3))

скобку убери одну

Убрал , но Error остались те же :sad:

0



#8

Отправлено 20 июля 2014 — 19:12

  • Новичок

ChangeFirstSkin([playerid])) замени на ChangeFirstSkin[playerid] = 0;

0



#9

Отправлено 20 июля 2014 — 20:44

  • Прохожий

Просмотр сообщенияNewLife (20 июля 2014 — 19:12) писал:

ChangeFirstSkin([playerid])) замени на ChangeFirstSkin[playerid] = 0;

я решил ту проблему теперь появилась другая , помогите :happy:

вот в этой строке    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)   выдаёт 4 ERROR  
error 029: invalid expression, assumed zero , 
error 001: expected token: ";", but found "]" ,  
error 029: invalid expression, assumed zero  ,  
и четвёртый типа слишком много предупреждений в одной строке

вот весь код

if(!strcmp(cmdtext, "/lsopen", true)) 
{
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)) 
         {
              MoveObject(980, -290.84, 1507.32, 77.61, 2.2); 
              SetTimer("Vorot", 7000, 0); 
             SendClientMessage(playerid, COLOR_LIGHTBLUE,"Ворота закроются через 7 секунд."); 
}
else
{
return SendClientMessage(playerid,COLOR_YELLOW," Вы не можете открыть эти ворота!"); 
}
return 1;
}


public Vorot()
{
        MoveObject(980, -302.34, 1507.46, 77.61, 2.2); 
           return 1;
}

0



#10

Отправлено 23 июля 2014 — 09:52

  • Новичок

if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1))
Скобку лишню убрать надо

0


  • ← Предыдущая тема
  • Проблемы с компилированием
  • Следующая тема →

  • Вы не можете создать новую тему
  • Тема закрыта


1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей

stock ShowStats(playerid, checkadm)
{
	new dialog[256];
	format(dialog, sizeof(dialog),
		"{FFFFFF}Ник:tt{0089ff}%sn
		{FFFFFF}Пол:tt{0089ff}%sn
		{FFFFFF}Раса:tt{0089ff}%sn
		{FFFFFF}Возраст:t{0089ff}%d лет/годn
		{FFFFFF}Отыграных часов:tt{0089ff}%dn",
	pName(playerid),
	(player_info[playerid][pSex] == 1) ? ("Мужской") : ("Женский"),
	PlayerRaces[player_info[playerid][pRace]-1],
	player_info[playerid][pAge],
	player_info[playerid][pEXP],
	);
	if(checkadm == 0) SPD(playerid, DLG_STATS, DIALOG_STYLE_MSGBOX, !"{ff9300}Статистика персонажа", dialog, !"Назад", !"Закрыть");
	else SPD(playerid, DLG_NONE, DIALOG_STYLE_MSGBOX, !"{ff9300}Статистика персонажа", dialog, !"Закрыть", "");
}

Помогите пожалуйста! Не пойму в чем же ошибки.

error 029: invalid expression, assumed zero
error 001: expected token: ",", but found ";"

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DLG_REG:
{
if(response)
{
if(!strlen(inputtext))
{
ShowRegistration(playerid);
return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Ââåäèòå ïàðîëü â ïîëå íèæå.");
}
if(strlen(inputtext) < 8 || strlen(inputtext) > 32)
{
ShowRegistration(playerid);
return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Ïàðîëü äîëæåí áûòü îò 8-ìè äî 32-óõ ñèìâîëîâ");
}
new regex:rg_passwordcheck = regex_new("^[a-zA-Z0-9]{1,}$");
if(regex_check(inputtext, rg_passwordcheck))
{
strmid(player_info[playerid][PASSWORD], inputtext, 0, strlen(inputtext), 32);
SPD(playerid, DLG_REGMAIL, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ > {00FFFF}Email",
"Ââåäèòå âàø íàñòîÿùèé Email àäðåñn
 ñëó÷àè åñëè âû ïîòåðÿåòå äîñòóï ê àêêàóíòó òî âû ñìîæåòå âîññòàíîâèòü åãî ÷åðåç Emailn
Ââåäèòå åãî â ïîëå íèæå è íàæìèòå "Äàëåå"",
"Äàëåå", "");
}
else
{
ShowRegistration(playerid);
return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Ïàðîëü äîëæåí ñîñòîÿòü èç ëàòèíñêèõ ñèìâîëîâ è ÷èñåë");
}
regex_delete(rg_passwordcheck);
}
else
{
SCM(playerid, COLOR_WHITE, "{FFFFFF}Èñïîëüçóéòå êîìàíäó /q ÷òîáû âûéòè èç GTA. Îòêðûòü ÷àò: êëàâèøà T");
SPD(playerid, -1, 0, " ", " ", " ", "");
return Kick(playerid);
}
}
case DLG_REGMAIL:
{
if(!strlen(inputtext))
SPD(playerid, DLG_REGMAIL, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ > {00FFFF}Email",
"Ââåäèòå âàø íàñòîÿùèé Email àäðåñn
 ñëó÷àè åñëè âû ïîòåðÿåòå äîñòóï ê àêêàóíòó òî âû ñìîæåòå âîññòàíîâèòü ÷åðåç Emailn
Ââåäèòå åãî â ïîëå íèæå è íàæìèòå "Äàëåå"",
"Äàëåå", "");
return SCM(playerid, COLOR_RED, "[Îøèáêà] {FFFFFF}Ââåäèòå Email â ïîëå íèæå.");
new regex:rg_emailcheck = regex_new("^[a-zA-Z0-9.-_]{1,43}@[a-zA-Z]{1,12}.[a-zA-Z]{1,8}$");
if(regex_check(inputtext, rg_emailcheck))
} // ЖАЛУЕТСЯ НА ЭТУ СТРОКУ 337
}
return 1;
}

I’m getting the following error whenever I compile my code: "Error 029: Invalid expression, assumed zero"

The error is thrown on the following line:

if ((PlayerInfo[playerid][ADMINLevel])) || (IsPlayerAdmin(playerid))

I want the if-statement to check if «ADMINLevel» is above zero or if the player is logged in as an RCON admin.

James Monger's user avatar

James Monger

10.1k7 gold badges61 silver badges97 bronze badges

asked Aug 8, 2013 at 0:23

Clove's user avatar

You’re constructing your if-statement wrong. The correct way to do it is

if(PlayerInfo[playerid][ADMINLevel] > 0 || IsPlayerAdmin(playerid))
{
    /* Put your desired script here */
}

Your code was nearly correct (although it did have some unnecessary brackets), you just need to actually add a comparison to the ADMINLevel check. An if-statement should be like a question («is admin level more than 0», rather than just «is admin level»). You can find more information about if-statements in Pawn here, and I think it will be useful for you to read.

answered Aug 8, 2013 at 15:46

James Monger's user avatar

James MongerJames Monger

10.1k7 gold badges61 silver badges97 bronze badges

0

PlayerInfo[..][..] does not return a boolean. Add > 0 to fix it

answered Aug 8, 2013 at 15:38

Rob van der Veer's user avatar

Rob van der VeerRob van der Veer

1,1481 gold badge7 silver badges20 bronze badges

1

Автор: minimiller
Перевод и редактирование: DJ_WEST

Список ошибок:

Код: Выделить всё

/*001*/  "expected token: "%s", but found "%s"n",
/*002*/  "only a single statement (or expression) can follow each "case"n",
/*003*/  "declaration of a local variable must appear in a compound blockn",
/*004*/  "function "%s" is not implementedn",
/*005*/  "function may not have argumentsn",
/*006*/  "must be assigned to an arrayn",
/*007*/  "operator cannot be redefinedn",
/*008*/  "must be a constant expression; assumed zeron",
/*009*/  "invalid array size (negative or zero)n",
/*010*/  "invalid function or declarationn",
/*011*/  "invalid outside functionsn",
/*012*/  "invalid function call, not a valid addressn",
/*013*/  "no entry point (no public functions)n",
/*014*/  "invalid statement; not in switchn",
/*015*/  ""default" case must be the last case in switch statementn",
/*016*/  "multiple defaults in "switch"n",
/*017*/  "undefined symbol "%s"n",
/*018*/  "initialization data exceeds declared sizen",
/*019*/  "not a label: "%s"n",
/*020*/  "invalid symbol name "%s"n",
/*021*/  "symbol already defined: "%s"n",
/*022*/  "must be lvalue (non-constant)n",
/*023*/  "array assignment must be simple assignmentn",
/*024*/  ""break" or "continue" is out of contextn",
/*025*/  "function heading differs from prototypen",
/*026*/  "no matching "#if..."n",
/*027*/  "invalid character constantn",
/*028*/  "invalid subscript (not an array or too many subscripts): "%s"n",
/*029*/  "invalid expression, assumed zeron",
/*030*/  "compound statement not closed at the end of filen",
/*031*/  "unknown directiven",
/*032*/  "array index out of bounds (variable "%s")n",
/*033*/  "array must be indexed (variable "%s")n",
/*034*/  "argument does not have a default value (argument %d)n",
/*035*/  "argument type mismatch (argument %d)n",
/*036*/  "empty statementn",
/*037*/  "invalid string (possibly non-terminated string)n",
/*038*/  "extra characters on linen",
/*039*/  "constant symbol has no sizen",
/*040*/  "duplicate "case" label (value %d)n",
/*041*/  "invalid ellipsis, array size is not knownn",
/*042*/  "invalid combination of class specifiersn",
/*043*/  "character constant exceeds range for packed stringn",
/*044*/  "positional parameters must precede all named parametersn",
/*045*/  "too many function argumentsn",
/*046*/  "unknown array size (variable "%s")n",
/*047*/  "array sizes do not match, or destination array is too smalln",
/*048*/  "array dimensions do not matchn",
/*049*/  "invalid line continuationn",
/*050*/  "invalid rangen",
/*051*/  "invalid subscript, use "[ ]" operators on major dimensionsn",
/*052*/  "multi-dimensional arrays must be fully initializedn",
/*053*/  "exceeding maximum number of dimensionsn",
/*054*/  "unmatched closing bracen",
/*055*/  "start of function body without function headern",
/*056*/  "arrays, local variables and function arguments cannot be public (variable "%s")n",
/*057*/  "unfinished expression before compiler directiven",
/*058*/  "duplicate argument; same argument is passed twicen",
/*059*/  "function argument may not have a default value (variable "%s")n",
/*060*/  "multiple "#else" directives between "#if ... #endif"n",
/*061*/  ""#elseif" directive follows an "#else" directiven",
/*062*/  "number of operands does not fit the operatorn",
/*063*/  "function result tag of operator "%s" must be "%s"n",
/*064*/  "cannot change predefined operatorsn",
/*065*/  "function argument may only have a single tag (argument %d)n",
/*066*/  "function argument may not be a reference argument or an array (argument "%s")n",
/*067*/  "variable cannot be both a reference and an array (variable "%s")n",
/*068*/  "invalid rational number precision in #pragman",
/*069*/  "rational number format already definedn",
/*070*/  "rational number support was not enabledn",
/*071*/  "user-defined operator must be declared before use (function "%s")n",
/*072*/  ""sizeof" operator is invalid on "function" symbolsn",
/*073*/  "function argument must be an array (argument "%s")n",
/*074*/  "#define pattern must start with an alphabetic charactern",
/*075*/  "input line too long (after substitutions)n",
/*076*/  "syntax error in the expression, or invalid function calln",
/*077*/  "malformed UTF-8 encoding, or corrupted file: %sn",
/*078*/  "function uses both "return" and "return <value>"n",
/*079*/  "inconsistent return types (array & non-array)n",
/*080*/  "unknown symbol, or not a constant symbol (symbol "%s")n",
/*081*/  "cannot take a tag as a default value for an indexed array parameter (symbol "%s")n",
/*082*/  "user-defined operators and native functions may not have statesn",
/*083*/  "a function may only belong to a single automaton (symbol "%s")n",
/*084*/  "state conflict: one of the states is already assigned to another implementation (symbol "%s")n",
/*085*/  "no states are defined for function "%s"n",
/*086*/  "unknown automaton "%s"n",
/*087*/  "unknown state "%s" for automaton "%s"n",
/*088*/  "number of arguments does not match definitionn"

Разбор ошибок
Рассмотрим пример нахождения и самостоятельного решения ошибок при компиляции.
Допустим у нас есть ошибка:

C:AMXXexample.sma(107) : error 035: argument type mismatch (argument 2)

Теперь давайте попытаемся разобрать эту ошибку по частям:
1) C:AMXXexample.sma — это директория, где находится исходник (.sma) нашего плагина.
2) (107) — это номер строки, в которой есть ошибка. Большинство современных редакторов текста имеют панель с пронумерованными строками (Notepad++, AMXX-Studio и другие).
3) error 035 — это код ошибки (список ошибок указан выше).
4) argument type mismatch — это описание ошибки с кодом, указанным до этого. В данном случае нам говорится, что «аргумент имеет неверный тип».
5) (argument 2) — это более подробное описание ошибки. В данном случае нам указывается, что ошибка во 2 аргументе.

Итого, получаем: в файле example.sma, который находится в директории C:AMXX, в строке под номером 107 есть ошибка с кодом 035, которая означает, что аргумент 2 имеет неверный тип данных.

Решение ошибок
Теперь попытаемся исправить нашу ошибку. Идем в строку под номером 107 и видим следующий код:

Код: Выделить всё

client_print
(0, "Welcome to the server!")
 

Идем на Вы должны зарегистрироваться, чтобы видеть ссылки.

и читаем описание функции:

client_print — Sends a message to a player.

Syntax:
client_print ( index, type, const message[], … )

id is a player index from 1 to 32. If 0, the message will be sent to all players.

The type is one of three types:
print_chat — chat text
print_console — console message
print_notify — console in dev mode
print_center — center say

Смотрим синтаксис команды client_print и видим, что первый аргумент index — это номер игрока (id), который может быть от 1 до 32, если же он 0, то сообщение будет отсылаться всем игрокам на сервере. Второй аргумент type — это тип сообщения, который может быть:

print_chat — текст в чат
print_console — текст в консоль
print_notify — текст в консоль в режиме разработчика
print_center — текст по центру

Третий аргумент message — это и есть текст нашего сообщения. Теперь вернемся, к нашему, коду. Мы видим, что у нас нет второго аргумента (тип сообщения), а сразу идет текст сообщения, исправляем на:

client_print(0, print_center, «Welcome to the server!»)

Теперь компиляция прошла успешно.

Описание ошибок:
error 001: expected token: «X», but found «Y»
Ошибка означает, что не найден X, когда найден Y. Наиболее часто возникает, когда забывают поставить недостающие знаки ; { } ( ).
Пример ошибки:

Код: Выделить всё

public Function
(id)
{
    if (is_user_bot(id)
    return PLUGIN_HANDLED// код
    
    return PLUGIN_CONTINUE
}
 

error 017: undefined symbol «X»
Ошибка означает, что X — неизвестный сивол/команда/переменная/функция. Поэтому такую функцию или переменную нужно объявить перед использованием. Например, функция is_user_hacker не существует.
Пример ошибки:

Код: Выделить всё

public Function
(id)
{
    if (is_user_hacker(id))
    return PLUGIN_HANDLED// код
    
    return PLUGIN_CONTINUE
}
 

error 032: array index out of bounds (variable X)
Ошибка означает, что в мы вышли за предел размера массива X.
Пример ошибки:

Код: Выделить всё

new s_Name
[32]
s_Name[33] = "*"
 

error 033: array must be indexed (variable X)
Ошибка означает, что массив должен быть проиндексирован. Например, мы не указали размер массива при его объявлении.
Пример ошибки:

Код: Выделить всё

new s_String 
= "My string"
 

error 035: argument type mismatch (argument X)
Ошибка означает, что аргумент X имеет неверный тип данных. Например, когда вместо целочисленного аргумента передаем строку.
Пример ошибки:

Код: Выделить всё

public Function1
(id)
{
    Function2(id, "10")
}
public Function2(id, count)
{
    // код
}
 

error 040: duplicate «case» label (value X)
Ошибка означает, что имеется дубль оператора case со значением X.
Пример ошибки:

Код: Выделить всё

public Function
(id)
{
    switch(count)
    {
        case 1: count += 1
    case 2
: count += 2
    case 2
: count += 3
    
}
}
 

error 075: input line too long (after substitutions)
Ошибка означает, что указанная строка слишком длинная. Например, около 500 символов.
Пример ошибки:

Код: Выделить всё

public Function
(id)
{
    server_print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
}
 

error 078: function uses both «return» and «return <value>»
Ошибка означает, что функция использует, как return, так и return <значение>.
Пример ошибки:

Код: Выделить всё

public Function
(id)
{
    if (is_user_alive(id))    
        return

        return PLUGIN_HANDLED

}
 

error 088: number of arguments does not match definition
Ошибка означает, что количество переданных аргументов не соответсвует количеству объявленных аргументов.
Пример ошибки:

Код: Выделить всё

public Function1
(id)
{
    Function2(id)
}
public Function2(id, count)
{
    // код
}
 

Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.

Понравилась статья? Поделить с друзьями:
  • Как найти разряженный айфон по локатору
  • Как найти рекламу в купи продай
  • Как составить график работы в word
  • Как найти кто списал деньги с карты
  • Гугл диск ожидает подключения как исправить