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

Read Result, get_user_info

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Read Result, get_user_info

Сообщение Polarhigh » 14 май 2010, 15:02

Вобщем не работает этот кусоу кода:

[pawn]            while (SQL_MoreResults(h_Query)){
            
SQL_ReadResult(h_Query0read[id], charsmax(read));

                        if (
equali(read[id], "1")){
                        
client_cmd(id"name ^"%s^""s_Name[id]);
                        
                        while (
SQL_MoreResults(h_Query_pswd)){
                            
SQL_ReadResult(h_Query_pswd0pswd[id], 32);
                            
client_cmd(id"setinfo trs_pswd ^"%s^""pswd[id]);
                        
SQL_NextRow(h_Query_pswd);
                        }
                    }
                        else if (
equali(read[id], "0"))
                        {
                    while (
SQL_MoreResults(h_Query_pswd)){
                        
SQL_ReadResult(h_Query_pswd0pswd_1[id], 32);
                            
get_user_name(idname[id], charsmax(name));
                            
client_cmd(id"name ^"[NOT_logged]%s^""name[id]);
                            
get_user_info(id"trs_pswd"pswd_0[id], 31);
                            
SQL_NextRow(h_Query_pswd);
                        }
                            
client_print (idprint_chat,"setinfo trs_pswd %s ,table trs_pswd %s",pswd_0[id],pswd_1[id] );
                            if (
equali(pswd_1[id], pswd_0[id])){
                                
SQL_Execute(h_Query_up);
                            }else{
                                
show_motd (idtrsLogin"Login Form"
                            }
                        } 
                        
SQL_NextRow(h_Query);
                    }  
[/pawn]

Так же почему-то не работает это
[pawn]get_user_info(id"trs_pswd"pswd_0[id], 31); [/pawn]

хотя если сделать так (записать не в двумерный масив)
[pawn]get_user_info(id"trs_pswd"pswd_031); [/pawn]
работает
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: Read Result, get_user_info

Сообщение Polarhigh » 15 май 2010, 07:55

DJ_WEST писал(а):А где ты выполняешь запрос h_Query_pswd? Может он не выполняется.


Я проверял, выполняется, но не выполняется в плагине, вот сам запрос:
[pawn]h_Query_pswd SQL_PrepareQuery(g_h_Sql_Connect"SELECT `passwd` FROM `trs_users` WHERE `name`='%s' LIMIT 0,1;"s_Name[id]); [/pawn]
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: Read Result, get_user_info

Сообщение DJ_WEST » 15 май 2010, 16:23

Все это, конечно, хорошо, но я так и не вижу где он выполняется, ты показал лишь сам запрос. Выложи весь исходник, так легче смотреть "на картину" полностью.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Read Result, get_user_info

Сообщение Polarhigh » 16 май 2010, 22:44

[pawn][/pawn]
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: Read Result, get_user_info

Сообщение Polarhigh » 16 май 2010, 22:46

Вот
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: Read Result, get_user_info

Сообщение DJ_WEST » 16 май 2010, 23:53

Я смотрю у тебя два запроса h_Query и h_Query_pswd поулчают данные из одной таблицы trs_users. Собственно это можно сделать одним запросом, примерно так:
Код: Выделить всё
SELECT ingame,passwd FROM trs_users WHERE name=%s

А дальше уже при чтении результатов можно сделать так:
[pawn]
new i_Ingame SQL_FieldNameToNum(h_Query"ingame")
new 
i_Passwd SQL_FieldNameToNum(h_Query"passwd")
 
[/pawn]
Затем:
[pawn]
SQL_ReadResult
(h_Queryi_Ingameread[id], charsmax(read[]))
SQL_ReadResult(h_Queryi_Passwdpswd[id], charsmax(pswd[]))
 
[/pawn]
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Read Result, get_user_info

Сообщение Polarhigh » 17 май 2010, 08:11

[pawn]
public SQL_Query
(id)
{
        
        get_pcvar_string
(CVAR_patch_login ,trsLogin, 199);
        
        new Handle
:h_Query;
        new Handle:h_Query_up;
        
        h_Query 
= SQL_PrepareQuery(g_h_Sql_Connect, "SELECT ingame,passwd FROM trs_users WHERE name='%s';", s_Name[id]);
        h_Query_up = SQL_PrepareQuery(g_h_Sql_Connect, "UPDATE `trs_users` SET `ingame`='1' WHERE `name`='%s';", s_Name[id]);
        
        if 
(!SQL_Execute(h_Query))
        {
            server_print("[TRS]Can't execute MySQL query, error");
            log_amx("[TRS]Can't execute MySQL query, error");
        }else{
            
            while 
(SQL_MoreResults(h_Query)){
                        new i_Ingame = SQL_FieldNameToNum(h_Query, "ingame");
            SQL_ReadResult(h_Query, i_Ingame, read[id], charsmax(read[]));
                        new i_Passwd = SQL_FieldNameToNum(h_Query, "passwd");
                        if (equali(read[id], "1")){
                        client_cmd(id, "name ^"%s^"", s_Name[id]);
                        
                        while 
(SQL_MoreResults(h_Query)){
                            SQL_ReadResult(h_Query, i_Passwd, pswd[id], charsmax(pswd[]));
                            client_cmd(id, "setinfo trs_pswd ^"%s^"", pswd[id]);
                        SQL_NextRow(h_Query);
                        }
                    }
                        else if (equali(read[id], "0"))
                        {
                    while (SQL_MoreResults(h_Query)){
                        SQL_ReadResult(h_Query, i_Passwd, pswd[id], charsmax(pswd[]));
                        client_print (id, print_chat,"table %s",pswd_1[id]);
                        SQL_NextRow(h_Query);
                    }
                            get_user_name(id, name[id], charsmax(name));
                            client_cmd(id, "name ^"[NOT_logged]%s^"", name[id]);
                            get_user_info(id, "trs_pswd", pswd_0[id], 31);
                            client_print (id, print_chat,"setinfo trs_pswd %s ,table trs_pswd %s",pswd_0[id],pswd_1[id] );
                            if (equali(pswd_1[id], pswd_0[id])){
                                SQL_Execute(h_Query_up);
                            }else{
                                show_motd (id, trsLogin, "Login Form") 
                            
}
                        } 
                    
} 
        
}    
        return PLUGIN_CONTINUE
;
}
 [/pawn]

Добавлено спустя 2 минуты 1 секунду:
работает только это, остальное нет
[pawn]   while (SQL_MoreResults(h_Query)){
                            
SQL_ReadResult(h_Queryi_Passwdpswd[id], charsmax(pswd[]));
                            
client_cmd(id"setinfo trs_pswd ^"%s^""pswd[id]);
                        
SQL_NextRow(h_Query);
                        } 
[/pawn]
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: Read Result, get_user_info

Сообщение DJ_WEST » 17 май 2010, 09:42

Все равно криво написано, код:
[pawn]new i_Ingame SQL_FieldNameToNum(h_Query"ingame")
new 
i_Passwd SQL_FieldNameToNum(h_Query"passwd"[/pawn]
Не нужно использовать в цикле while.
Проверку:
[pawn]if (equali(read[id], "1"))
...
else if (
equali(read[id], "0"))
... 
[/pawn]
Тоже надо бы вынести за цикл, у тебя же select всегда один результат возвращает.

Также нету освобождения запросов, а именно:
[pawn]SQL_FreeHandle(h_Query[/pawn]
Странно, что у тебя нет ошибок по этому поводу в логах.

И добавляй вывод debug информации на каждом этапе коде (client_print или server_print).
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Read Result, get_user_info

Сообщение Polarhigh » 17 май 2010, 22:47

Чёрт, я нуб, голова не варит( неполучается, запутолся я с этим павном
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Пред.

Вернуться в Скриптинг

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

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