Русское сообщество по скриптингу

Error: Array must be indexed  [Решено]

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Error: Array must be indexed

Сообщение ViktorOptemest » 13 июл 2017, 16:06

Здравствуйте, я вот пытался написать свой первый плагин и мне выдает ошибки

Код: Выделить всё
Error: Array must be indexed (variable "SteamID") on line 22
Warning: Expression has no effect on line 22
Error: Expected token: ";", but found ")" on line 22
Error: Invalid expression, assumed zero on line 22
Error: Too many error messages on one line on line 22

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <file>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "ViktorOptemest"

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_concmd("test_vip", "vip")
}
public vip(id)
{
    
    new UserSteamID
[35], SteamID[35], len, i = 0
    get_user_authid
(id, UserSteamID, 34)
    new Strok = file_size ( "vip.txt", 1)
    do
    
{
     read_file("vip.txt", i, SteamID, 34, len)
    }
    while( SteamID == UserSteamID || i = Strok , i++)
    console_print(id, "Вы вип - ", SteamID == UserSteamID ? "Да" : "Нет")

Суть плагина в том, что при написание в консоли test_vip должен активироваться функция vip.
После чего берем SteamID игрока и он проверяет есть ли он в списке или нет после чего выдает результат.
Помогите плиззз

Название темы скорректировано // Subb98
Аватара пользователя
ViktorOptemest
 
Сообщения: 3
Зарегистрирован: 13 июл 2017, 15:46
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn

Error: Array must be indexed

Сообщение ViktorOptemest » 13 июл 2017, 16:47

Здравствуйте, я вот пытался написать свой первый плагин и мне выдает ошибки

Код: Выделить всё
Error: Array must be indexed (variable "SteamID") on line 22
Warning: Expression has no effect on line 22
Error: Expected token: ";", but found ")" on line 22
Error: Invalid expression, assumed zero on line 22
Error: Too many error messages on one line on line 22

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <file>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "ViktorOptemest"

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_concmd("test_vip", "vip")
}
public vip(id)
{
    
    new UserSteamID
[35], SteamID[35], len, i = 0
    get_user_authid
(id, UserSteamID, 34)
    new Strok = file_size ( "vip.txt", 1)
    do
    
{
     read_file("vip.txt", i, SteamID, 34, len)
    }
    while( SteamID == UserSteamID || i = Strok , i++)
    console_print(id, "Вы вип - ", SteamID == UserSteamID ? "Да" : "Нет")

Суть плагина в том, что при написание в консоли test_vip должен активироваться функция vip.
После чего берем SteamID игрока и он проверяет есть ли он в списке или нет после чего выдает результат.
Помогите плиззз

Дубль темы // Subb98
Аватара пользователя
ViktorOptemest
 
Сообщения: 3
Зарегистрирован: 13 июл 2017, 15:46
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn

Re: Error: Array must be indexed

Сообщение flymic24 » 13 июл 2017, 17:02

ViktorOptemest, А почему бы не записать всю информацию из файла в тот же Trie или Array и после искать уже в нем совпадения ?

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

Код: Выделить всё
new a[8], b[8];
equal(a, b
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Error: Array must be indexed

Сообщение ViktorOptemest » 13 июл 2017, 17:48

Тоесть так?

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <file>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "ViktorOptemest"

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_concmd("test_vip", "vip")
}
public vip(id)
{
    
    new UserSteamID
[35], SteamID[35], len, i = 0
    get_user_authid
(id, UserSteamID, 34)
    new Strok = file_size ( "vip.txt", 1)
    do
    
{
     read_file("vip.txt", i, SteamID, 34, len)
    }
    while( equal(SteamID, UserSteamID)|| i = Strok , i++)
    console_print(id, "Вы - ", equal (SteamID, UserSteamID) ? "Да" : "Нет")


Мне всё равно выдает ошибку(

Код: Выделить всё
Error: Must be lvalue (non-constant) on line 22
Error: Expected token: ";", but found ")" on line 22
Error: Invalid expression, assumed zero on line 22
Error: Too many error messages on one line on line 22
Аватара пользователя
ViktorOptemest
 
Сообщения: 3
Зарегистрирован: 13 июл 2017, 15:46
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn

Re: Error: Array must be indexed

Сообщение ArKaNeMaN » 13 июл 2017, 19:01

ViktorOptemest,
В игре не проверял, но при компиляции ошибок нету.

Тут ошибка в том что строки сравнивать надо при помощи equal(1строка, 2строка)
И почему i++ в while?... Там только условие может быть...

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <file>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "ViktorOptemest"

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_concmd("test_vip", "vip")
}

public vip(id){

    new UserSteamID[35], SteamID[35], len, i = 0;
    
    get_user_authid
(id, UserSteamID, charsmax(UserSteamID));
    
    new Strok 
= file_size ( "vip.txt", 1);
    
    while
(!equal(SteamID, UserSteamID) || i != Strok){
        
        read_file
("vip.txt", i, SteamID, charsmax(SteamID), len);
        
        i
++;
    
    
}
    
    console_print
(id, "Вы вип - ", equal(SteamID, UserSteamID) ? "Да" : "Нет");
    
Аватара пользователя
ArKaNeMaN
 
Сообщения: 105
Зарегистрирован: 03 авг 2016, 20:28
Благодарил (а): 26 раз.
Поблагодарили: 11 раз.
Опыт программирования: Около года
Языки программирования: AMXX
PHP
JS

Re: Error: Array must be indexed  [Решено]

Сообщение артист666 » 14 июл 2017, 15:11

У цикла тела нет и в условии стоит запятая.

Да и код у тебя работать не будет. )

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

1е, нужно получить в динамический массив все steamID из файла, до загрузки карты, в plugin_init например.
И потом сверять их уже из массива.
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2