Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

ошибка error 035

Окт
12
0
Пользователь
Здравствуйте помогите пожалуйста исправить ошибку в скрипте
static Diver_ShowBoatMenu(playerid)
{
new dialog[512];
new line[128];

format(dialog, sizeof(dialog), "{FF0000}Гидроцикл\t{FFFFFF}%d руб\t{999999}Скоростной\n", DIVER_BOAT_PRICE_JETSKI);
format(line, (line), "{FF0000}Моторная лодка\t{FFFFFF}%d руб\t{999999}Надёжный\n", DIVER_BOAT_PRICE_MOTOR);
strcat(dialog, line);
format(line, (line), "{FF0000}Speedy Yacht\t{FFFFFF}%d руб\t{999999}Комфортный\n", DIVER_BOAT_PRICE_SPEEDY);
strcat(dialog, line);
format(line, (line), "{FF0000}Marine Yacht\t{FFFFFF}%d руб\t{999999}Премиальный\n", DIVER_BOAT_PRICE_MARINE);
strcat(dialog, line);
format(line, (line), "{FF0000}Sea Yacht\t{FFFFFF}%d руб\t{999999}Роскошный\n", DIVER_BOAT_PRICE_SEA);
strcat(dialog, line);
format(line, (line), "{FF0000}Ocean Yacht\t{FFFFFF}%d руб\t{999999}Элитный", DIVER_BOAT_PRICE_OCEAN);
strcat(dialog, line);

ShowPlayerDialog(playerid, DIALOG_DIVER_RENT_BOAT, DIALOG_STYLE_LIST, "{FF5252}Выберите тип лодки", dialog, "Арендовать", "Отмена");
}

ошибки

../gamemodes/vodo.pwn(353) : error 035: argument type mismatch (argument 2)
../gamemodes/vodo.pwn(354) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(355) : error 035: argument type mismatch (argument 2)
../gamemodes/vodo.pwn(356) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(357) : error 035: argument type mismatch (argument 2)
../gamemodes/vodo.pwn(358) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(359) : error 035: argument type mismatch (argument 2)
../gamemodes/vodo.pwn(360) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(361) : error 035: argument type mismatch (argument 2)
../gamemodes/vodo.pwn(362) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(363) : error 035: argument type mismatch (argument 2)
../gamemodes/vodo.pwn(387) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(387) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(388) : error 035: argument type mismatch (argument 2)
 
Июл
256
191
Пользователь
Твоя проблема в индексации массива, ты обращаешься к g_DiverItems без индекса i.

Твои строки:

Pawn:
new item_id = g_DiverItems[DITEM_ITEMID];
new item_count = Diver_GetItemCount(playerid, item_id);

Должно быть так:

Pawn:
new item_id = g_DiverItems[i][DITEM_ITEMID];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames[i], item_count, g_DiverItems[i][DITEM_PRICE]);

Ты итерируешь по i но забыл передать его как первый индекс массива. Компилятор и ругается на несоответствие типов именно потому что получает двумерный массив там где ждёт конкретное значение. Но, вообще, скинь лучше объявление g_DiverItems и g_DiverItemNames, хочу видеть как они объявлены прежде чем давать тебе совет заменить код, иначе моё исправление может оказаться неточным.
 
Окт
12
0
Пользователь
Твоя проблема в индексации массива, ты обращаешься к g_DiverItems без индекса i.

Твои строки:

Pawn:
new item_id = g_DiverItems[DITEM_ITEMID];
new item_count = Diver_GetItemCount(playerid, item_id);

Должно быть так:

Pawn:
new item_id = g_DiverItems[i][DITEM_ITEMID];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames[i], item_count, g_DiverItems[i][DITEM_PRICE]);

Ты итерируешь по i но забыл передать его как первый индекс массива. Компилятор и ругается на несоответствие типов именно потому что получает двумерный массив там где ждёт конкретное значение. Но, вообще, скинь лучше объявление g_DiverItems и g_DiverItemNames, хочу видеть как они объявлены прежде чем давать тебе совет заменить код, иначе моё исправление может оказаться неточным.
static
g_DiverItems[MAX_DIVER_ITEMS][DITEM_SIZE],
Float: g_DiverItemsFloat[MAX_DIVER_ITEMS][3],
g_DiverItemNames[MAX_DIVER_ITEMS][32],
g_DiverItemsCount = 0;

static
bool: g_PlayerDiver[MAX_PLAYERS],
g_PlayerDiverSkinBackup[MAX_PLAYERS],
g_PlayerDiverRentedBoat[MAX_PLAYERS] = {INVALID_VEHICLE_ID, ...},
Text3D: g_DiverText3D = Text3D:INVALID_3DTEXT_ID,
g_DiverActor = -1;


stock Diver_AddItem(Float:x, Float:y, Float:z, model, price, itemid, const name[])
{
if(g_DiverItemsCount >= MAX_DIVER_ITEMS) return 0;
g_DiverItemsFloat[g_DiverItemsCount][0] = x;
g_DiverItemsFloat[g_DiverItemsCount][1] = y;
g_DiverItemsFloat[g_DiverItemsCount][2] = z;
g_DiverItems[g_DiverItemsCount][DITEM_MODEL] = model;
g_DiverItems[g_DiverItemsCount][DITEM_PRICE] = price;
g_DiverItems[g_DiverItemsCount][DITEM_ITEMID] = itemid;
g_DiverItems[g_DiverItemsCount][DITEM_ACTIVE] = 1;
strmid(g_DiverItemNames[g_DiverItemsCount], name, 0, strlen(name), 32);
g_DiverItemsCount++;
return 1;
}
 
Окт
147
44
Пользователь
static
g_DiverItems[MAX_DIVER_ITEMS][DITEM_SIZE],
Float: g_DiverItemsFloat[MAX_DIVER_ITEMS][3],
g_DiverItemNames[MAX_DIVER_ITEMS][32],
g_DiverItemsCount = 0;

static
bool: g_PlayerDiver[MAX_PLAYERS],
g_PlayerDiverSkinBackup[MAX_PLAYERS],
g_PlayerDiverRentedBoat[MAX_PLAYERS] = {INVALID_VEHICLE_ID, ...},
Text3D: g_DiverText3D = Text3D:INVALID_3DTEXT_ID,
g_DiverActor = -1;


stock Diver_AddItem(Float:x, Float:y, Float:z, model, price, itemid, const name[])
{
if(g_DiverItemsCount >= MAX_DIVER_ITEMS) return 0;
g_DiverItemsFloat[g_DiverItemsCount][0] = x;
g_DiverItemsFloat[g_DiverItemsCount][1] = y;
g_DiverItemsFloat[g_DiverItemsCount][2] = z;
g_DiverItems[g_DiverItemsCount][DITEM_MODEL] = model;
g_DiverItems[g_DiverItemsCount][DITEM_PRICE] = price;
g_DiverItems[g_DiverItemsCount][DITEM_ITEMID] = itemid;
g_DiverItems[g_DiverItemsCount][DITEM_ACTIVE] = 1;
strmid(g_DiverItemNames[g_DiverItemsCount], name, 0, strlen(name), 32);
g_DiverItemsCount++;
return 1;
}
в вк отпиши я кидал срочно
 
Июл
256
191
Пользователь
static
g_DiverItems[MAX_DIVER_ITEMS][DITEM_SIZE],
Float: g_DiverItemsFloat[MAX_DIVER_ITEMS][3],
g_DiverItemNames[MAX_DIVER_ITEMS][32],
g_DiverItemsCount = 0;

static
bool: g_PlayerDiver[MAX_PLAYERS],
g_PlayerDiverSkinBackup[MAX_PLAYERS],
g_PlayerDiverRentedBoat[MAX_PLAYERS] = {INVALID_VEHICLE_ID, ...},
Text3D: g_DiverText3D = Text3D:INVALID_3DTEXT_ID,
g_DiverActor = -1;


stock Diver_AddItem(Float:x, Float:y, Float:z, model, price, itemid, const name[])
{
if(g_DiverItemsCount >= MAX_DIVER_ITEMS) return 0;
g_DiverItemsFloat[g_DiverItemsCount][0] = x;
g_DiverItemsFloat[g_DiverItemsCount][1] = y;
g_DiverItemsFloat[g_DiverItemsCount][2] = z;
g_DiverItems[g_DiverItemsCount][DITEM_MODEL] = model;
g_DiverItems[g_DiverItemsCount][DITEM_PRICE] = price;
g_DiverItems[g_DiverItemsCount][DITEM_ITEMID] = itemid;
g_DiverItems[g_DiverItemsCount][DITEM_ACTIVE] = 1;
strmid(g_DiverItemNames[g_DiverItemsCount], name, 0, strlen(name), 32);
g_DiverItemsCount++;
return 1;
}

Массивы двумерные, значит правка которую я давал раньше верная.

Pawn:
new item_id = g_DiverItems[i][DITEM_ITEMID];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames[i], item_count, g_DiverItems[i][DITEM_PRICE]);
 
Окт
12
0
Пользователь
Массивы двумерные, значит правка которую я давал раньше верная.

Pawn:
new item_id = g_DiverItems[i][DITEM_ITEMID];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames[i], item_count, g_DiverItems[i][DITEM_PRICE]);
мои строки "
new item_id = g_DiverItems[DITEM_ITEMID];
new item_count = Diver_GetItemCount(playerid, item_id);
if(item_count > 0)
{
new line[128];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);
strcat(dialog, line);
count++;
}
}
"

Меняй как сказали больше ошибок вылазит
 
Июл
256
191
Пользователь
мои строки "
new item_id = g_DiverItems[DITEM_ITEMID];
new item_count = Diver_GetItemCount(playerid, item_id);
if(item_count > 0)
{
new line[128];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);
strcat(dialog, line);
count++;
}
}
"

Меняй как сказали больше ошибок вылазит

Покажи какие именно ошибки вылазят и полный код функции после правки.
 
Окт
12
0
Пользователь
new count = 0;
for(new i = 0; i < g_DiverItemsCount; i++)
{
new item_id = g_DiverItems[DITEM_ITEMID];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);
if(item_count > 0)
{
new line[128];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);
strcat(dialog, line);
count++;
}
}

То

../gamemodes/vodo.pwn(387) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(387) : error 039: constant symbol has no size
../gamemodes/vodo.pwn(388) : error 017: undefined symbol "item_count"
../gamemodes/vodo.pwn(391) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(391) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(392) : error 035: argument type mismatch (argument 2)
 
Июл
256
191
Пользователь
new count = 0;
for(new i = 0; i < g_DiverItemsCount; i++)
{
new item_id = g_DiverItems[DITEM_ITEMID];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);
if(item_count > 0)
{
new line[128];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);
strcat(dialog, line);
count++;
}
}

То

../gamemodes/vodo.pwn(387) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(387) : error 039: constant symbol has no size
../gamemodes/vodo.pwn(388) : error 017: undefined symbol "item_count"
../gamemodes/vodo.pwn(391) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(391) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(392) : error 035: argument type mismatch (argument 2)

Ты не применил правку полностью, у тебя всё ещё нет и item_count объявлен внутри if из-за чего format его не видит. Вот правильный вариант:

Pawn:
new count = 0;
for(new i = 0; i < g_DiverItemsCount; i++)
{
    new item_id = g_DiverItems[i][DITEM_ITEMID];
    new item_count = Diver_GetItemCount(playerid, item_id);
    if(item_count > 0)
    {
        new line[128];
        format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames[i], item_count, g_DiverItems[i][DITEM_PRICE]);
        strcat(dialog, line);
        count++;
    }
}

Просто замени свой цикл на этот целиком.
 
Фев
60
6
Пользователь
Ты не применил правку полностью, у тебя всё ещё нет и item_count объявлен внутри if из-за чего format его не видит. Вот правильный вариант:

Pawn:
new count = 0;
for(new i = 0; i < g_DiverItemsCount; i++)
{
    new item_id = g_DiverItems[i][DITEM_ITEMID];
    new item_count = Diver_GetItemCount(playerid, item_id);
    if(item_count > 0)
    {
        new line[128];
        format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames[i], item_count, g_DiverItems[i][DITEM_PRICE]);
        strcat(dialog, line);
        count++;
    }
}

Просто замени свой цикл на этот целиком.
Согласен с тобой!
 
Окт
12
0
Пользователь
new count = 0;
for(new i = 0; i < g_DiverItemsCount; i++)
{
new item_id = g_DiverItems[DITEM_ITEMID];
new item_count = Diver_GetItemCount(playerid, item_id);
if(item_count > 0)
{
new line[128];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);
strcat(dialog, line);
count++;
}
}

Строки
(391) format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);
(392) strcat(dialog, line);

ошибки
../gamemodes/vodo.pwn(391) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(391) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(392) : error 035: argument type mismatch (argument 2)
 
Июл
256
191
Пользователь
new count = 0;
for(new i = 0; i < g_DiverItemsCount; i++)
{
new item_id = g_DiverItems[DITEM_ITEMID];
new item_count = Diver_GetItemCount(playerid, item_id);
if(item_count > 0)
{
new line[128];
format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);
strcat(dialog, line);
count++;
}
}

Строки
(391) format(line, sizeof(line), "%s\t%d\t%d руб.\n", g_DiverItemNames, item_count, g_DiverItems[DITEM_PRICE]);

(392) strcat(dialog, line);

ошибки
../gamemodes/vodo.pwn(391) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(391) : error 035: argument type mismatch (argument 1)
../gamemodes/vodo.pwn(392) : error 035: argument type mismatch (argument 2)

Я уже дважды написал одно и то же добавь [ i ] везде где g_DiverItems и g_DiverItemNames, больше повторять не буду.
 
Сверху