Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 5 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 49
  1. #1
    Аватар для Zeror_Dalglish
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    04.06.2014
    Сообщений
    224
    Репутация:
    -1 ±

    По команде бан.

    Начал делать бан с использованием Unix Time. Все хорошо но почему то записывает Дату бана не правильно, а именно "46".
    PHP код:
           CMD:ban(playeridparams[])
        {
              new 
    string[128], data[16], unbandateyearmonthday;
            if(
    PlayerInfo[playerid][pLogged] == 0) return true;
            if(
    PlayerInfo[playerid][pAdmin] < 3) return true;
              if(
    sscanf(params"uds[128]"params[0], params[1], params[2])) return SendClientMessage(playeridCOLOR_GRAD"Используйте: /ban [id игрока] [Дней] [причина]");
            if(
    params[1] > 30 || params[1] < 1) return SendClientMessage(playeridCOLOR_GRAD"Время бана от 1 до 30 дней");
             
    format(stringsizeof(string), "Администратор %s забанил игрока %s на %d дней. Причина: %s",PlayerInfo[playerid][pName],PlayerInfo[params[0]][pName],params[1],params[2]);
            
    SendClientMessageToAll(COLOR_LIGHTREDstring);
            
            
    getdate(yearmonthday);
            
    format(data16"%02d.%02d.%04d"daymonthyear);
            
    unbandate gettime() + params[1]*86400;
               
    format(mysql_stringsizeof(mysql_string), "INSERT INTO `"TABLE_BANS"` (Name_Admin, Name_Player, Lvl_Admin, Ban_Data, Unban_Data, Ban_Reason) VALUES ('%s', '%s','%d', '%d', %d, '%s')"PlayerInfo[playerid][pName], PlayerInfo[params[0]][pName], PlayerInfo[playerid][pAdmin], dataunbandateparams[2]);
            
    mysql_function_query(connect_to_mysqlmysql_stringfalse"""");
            return 
    true;
        } 
    В таблице тип varchar(32)
    Возможно что то с сравнением, ибо я не знаю какое поставить :). Ставил utf8_general_ci все равно так же.
    Помогите пожалуйста.

  2. #2
    Аватар для underwoker
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Сообщений
    333
    Репутация:
    47 ±
    Снова элементарные ответы же. Нужно просто чуть чуть посидеть и понять. Почитай о заполнителях.
    %d / %i - числовые.
    %s - строка.
    В данном случае нужно использовать %s, т.к. ты отформатировал дату.
    PHP код:
    format(mysql_stringsizeof(mysql_string), "INSERT INTO `"TABLE_BANS"` (Name_Admin, Name_Player, Lvl_Admin, Ban_Data, Unban_Data, Ban_Reason) VALUES ('%s', '%s','%d', '%s', %d, '%s')"PlayerInfo[playerid][pName], PlayerInfo[params[0]][pName], PlayerInfo[playerid][pAdmin], dataunbandateparams[2]); 
    mysql_function_query(connect_to_mysqlmysql_stringfalse""""); 
    "Власть, кровь, няш-мяш, кровь, власть, Крым наш!" - (c) Наталья Поклонская.

    Критик должен быть готов и способен в любой момент и по первому требованию занять место критикуемого им и выполнять его дело продуктивно и компетентно. В противном случае критика превращается в наглую, самодовлеющую силу и становится тормозом на пути прогресса. (с) AXE

  3. #3
    Аватар для Edwin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.02.2014
    Адрес
    Беларусь
    Сообщений
    188
    Репутация:
    20 ±
    Varchar-то правильно, конвертированная дата записывается в текстовом варианте
    Но ты ж и записывай текст а не числитель
    Так должно работать:
    PHP код:
           CMD:ban(playeridparams[]) 
        { 
              new 
    string[128], data[16], unbandateyearmonthday
            if(
    PlayerInfo[playerid][pLogged] == 0) return true
            if(
    PlayerInfo[playerid][pAdmin] < 3) return true
              if(
    sscanf(params"uds[128]"params[0], params[1], params[2])) return SendClientMessage(playeridCOLOR_GRAD"Используйте: /ban [id игрока] [Дней] [причина]"); 
            if(
    params[1] > 30 || params[1] < 1) return SendClientMessage(playeridCOLOR_GRAD"Время бана от 1 до 30 дней"); 
             
    format(stringsizeof(string), "Администратор %s забанил игрока %s на %d дней. Причина: %s",PlayerInfo[playerid][pName],PlayerInfo[params[0]][pName],params[1],params[2]); 
            
    SendClientMessageToAll(COLOR_LIGHTREDstring); 
             
            
    getdate(yearmonthday); 
            
    format(data16"%02d.%02d.%04d"daymonthyear); 
            
    unbandate gettime() + params[1]*86400
               
    format(mysql_stringsizeof(mysql_string), "INSERT INTO `"TABLE_BANS"` (Name_Admin, Name_Player, Lvl_Admin, Ban_Data, Unban_Data, Ban_Reason) VALUES ('%s', '%s','%d', '%s', %d, '%s')"PlayerInfo[playerid][pName], PlayerInfo[params[0]][pName], PlayerInfo[playerid][pAdmin], dataunbandateparams[2]); 
            
    mysql_function_query(connect_to_mysqlmysql_stringfalse""""); 
            return 
    true
        } 

  4. #4
    Аватар для Zeror_Dalglish
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    04.06.2014
    Сообщений
    224
    Репутация:
    -1 ±
    Цитата Сообщение от underwoker Посмотреть сообщение
    Снова элементарные ответы же. Нужно просто чуть чуть посидеть и понять. Почитай о заполнителях.
    %d / %i - числовые.
    %s - строка.
    В данном случае нужно использовать %s, т.к. ты отформатировал дату.
    PHP код:
    format(mysql_stringsizeof(mysql_string), "INSERT INTO `"TABLE_BANS"` (Name_Admin, Name_Player, Lvl_Admin, Ban_Data, Unban_Data, Ban_Reason) VALUES ('%s', '%s','%d', '%s', %d, '%s')"PlayerInfo[playerid][pName], PlayerInfo[params[0]][pName], PlayerInfo[playerid][pAdmin], dataunbandateparams[2]); 
    mysql_function_query(connect_to_mysqlmysql_stringfalse""""); 
    ой тупанул, я видимо не заметил что %d -стоит.
    В любом случий спасибо.

    - - - Добавлено - - -

    А вот ещё, как то можно конвертировать время до разбана в дни?

  5. #5
    Аватар для Edwin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.02.2014
    Адрес
    Беларусь
    Сообщений
    188
    Репутация:
    20 ±
    "Спасибо" в карман не положишь :D

    Конечно можно
    Код HTML:
    stock UNIXconvert(unix_timestamp = 0)
    {
        new yyear = 1970, mmonth = 1, dday  = 1, hhour =  0, mminute = 0, ssecond = 0;
     	getdate(yyear, mmonth, dday);
     	gettime(hhour, mminute, ssecond);
        yyear = unix_timestamp / 31556926;
        unix_timestamp -= yyear * 31556926;
        yyear += 1970;
    
        if(yyear % 4 == 0) unix_timestamp -= 21600;
    
        dday = unix_timestamp / 86400;
    
        switch (dday)
        {
            // в ssecond будет временно хранится число месяца
            case  0..30 : { ssecond = dday;    mmonth = 1; }
            case  31..58 : { ssecond = dday - 31; mmonth = 2; }
            case  59..89 : { ssecond = dday - 59; mmonth = 3; }
            case 90..119 : { ssecond = dday - 90; mmonth = 4; }
            case 120..150 : { ssecond = dday - 120; mmonth = 5; }
            case 151..180 : { ssecond = dday - 151; mmonth = 6; }
            case 181..211 : { ssecond = dday - 181; mmonth = 7; }
            case 212..242 : { ssecond = dday - 212; mmonth = 8; }
            case 243..272 : { ssecond = dday - 243; mmonth = 9; }
            case 273..303 : { ssecond = dday - 273; mmonth = 10; }
            case 304..333 : { ssecond = dday - 304; mmonth = 11; }
            case 334..366 : { ssecond = dday - 334; mmonth = 12; }
        }
    
        unix_timestamp -= dday * 86400;
        hhour = unix_timestamp / 3600;
    
        unix_timestamp -= hhour * 3600;
        mminute = unix_timestamp / 60;
    
        unix_timestamp -= mminute * 60;
        dday = ssecond + 1;
        ssecond = unix_timestamp;
    
     	new string[50];
     	switch(mmonth)
     	{
         	case 1: string = "января";
         	case 2: string = "февраля";
         	case 3: string = "марта";
         	case 4: string = "апреля";
         	case 5: string = "мая";
         	case 6: string = "июня";
         	case 7: string = "июля";
         	case 8: string = "августа";
         	case 9: string = "сентября";
         	case 10: string = "октября";
         	case 11: string = "ноября";
         	case 12: string = "декабря";
     	}
     	format(string, sizeof(string), "%02d %s %d, %d:%02d:%02d", dday, string, yyear, hhour, mminute, ssecond);
     	return string;
    }

  6. #6
    Аватар для underwoker
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Сообщений
    333
    Репутация:
    47 ±
    Цитата Сообщение от Zeror_Dalglish Посмотреть сообщение
    ой тупанул, я видимо не заметил что %d -стоит.
    В любом случий спасибо.

    - - - Добавлено - - -

    А вот ещё, как то можно конвертировать время до разбана в дни?
    Увы, вроде бы нет. Если вы о Unban_Data имеете ввиду.
    Потом просто будут проблемы с проверкой даты разбана при коннекте игрока.
    "Власть, кровь, няш-мяш, кровь, власть, Крым наш!" - (c) Наталья Поклонская.

    Критик должен быть готов и способен в любой момент и по первому требованию занять место критикуемого им и выполнять его дело продуктивно и компетентно. В противном случае критика превращается в наглую, самодовлеющую силу и становится тормозом на пути прогресса. (с) AXE

  7. #7
    Аватар для Zeror_Dalglish
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    04.06.2014
    Сообщений
    224
    Репутация:
    -1 ±
    Цитата Сообщение от underwoker Посмотреть сообщение
    Увы, вроде бы нет. Если вы о Unban_Data имеете ввиду.
    Потом просто будут проблемы с проверкой даты разбана при коннекте игрока.
    Да сам уже подумал что потом проблемы будут но вот ещё проблема.
    PHP код:
    forward Block_Ip_Address();
    public 
    Block_Ip_Address()
    {
        new 
    rows,fieldsIp_Address_Block[17];
        new 
    Ip_Address_Block_Time;
        
    cache_get_data(rowsfields);
        
    Ip_Address_Block[16] = cache_get_field_content_int(0"IP");
        
    Ip_Address_Block_Time cache_get_field_content_int(0"Clock");
        if(
    rows)
        {
            
    BlockIpAddress(Ip_Address_Block[16], Ip_Address_Block_Time);
            print(
    "Вызыван паблик");
        }

    Почему то не срабатывает код хотя в логи что паблик вызван.

  8. #8
    Аватар для underwoker
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Сообщений
    333
    Репутация:
    47 ±
    Прологируйте так, все возможно.
    Получается игрока просто не банит снова при нахождении ип адреса в БД?
    PHP код:
    forward Block_Ip_Address();
    public 
    Block_Ip_Address()
    {
        new 
    rows,fieldsIp_Address_Block[17];
        new 
    Ip_Address_Block_Time;
        
    cache_get_data(rowsfields);
        
    Ip_Address_Block[16] = cache_get_field_content_int(0"IP");
        
    Ip_Address_Block_Time cache_get_field_content_int(0"Clock");
        if(
    rows)
        {
            
    BlockIpAddress(Ip_Address_Block[16], Ip_Address_Block_Time);
            print(
    "IP:%s Time: %d",Ip_Address_Block[16], Ip_Address_Block_Time);
            print(
    "Вызыван паблик");
        }

    "Власть, кровь, няш-мяш, кровь, власть, Крым наш!" - (c) Наталья Поклонская.

    Критик должен быть готов и способен в любой момент и по первому требованию занять место критикуемого им и выполнять его дело продуктивно и компетентно. В противном случае критика превращается в наглую, самодовлеющую силу и становится тормозом на пути прогресса. (с) AXE

  9. #9
    Аватар для Zeror_Dalglish
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    04.06.2014
    Сообщений
    224
    Репутация:
    -1 ±
    Цитата Сообщение от underwoker Посмотреть сообщение
    Прологируйте так, все возможно.
    Получается игрока просто не банит снова при нахождении ип адреса в БД?
    PHP код:
    forward Block_Ip_Address();
    public 
    Block_Ip_Address()
    {
        new 
    rows,fieldsIp_Address_Block[17];
        new 
    Ip_Address_Block_Time;
        
    cache_get_data(rowsfields);
        
    Ip_Address_Block[16] = cache_get_field_content_int(0"IP");
        
    Ip_Address_Block_Time cache_get_field_content_int(0"Clock");
        if(
    rows)
        {
            
    BlockIpAddress(Ip_Address_Block[16], Ip_Address_Block_Time);
            print(
    "IP:%s Time: %d",Ip_Address_Block[16], Ip_Address_Block_Time);
            print(
    "Вызыван паблик");
        }

    PHP код:
    forward Block_Ip_Address_Cheeck();
    public 
    Block_Ip_Address_Cheeck()
    {
        new 
    rows,fieldsIp_Address_Block[17];
        new 
    Ip_Address_Block_Time;
        
    cache_get_data(rowsfields);
        
    cache_get_field_content(0"IP"Ip_Address_Block[16], connect_to_mysql);
        
    Ip_Address_Block_Time cache_get_field_content_int(0"Clock");
        if(
    rows)
        {
            
    BlockIpAddress(Ip_Address_Block[16], Ip_Address_Block_Time);
            
    printf("IP:%s Time: %d",Ip_Address_Block[16], Ip_Address_Block_Time);
            print(
    "Вызыван паблик");
        }

    PHP код:
    [01:36:25IPTime100500
    [01:36:25Вызыван паблик 

  10. #10
    Аватар для underwoker
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Сообщений
    333
    Репутация:
    47 ±
    Цитата Сообщение от Zeror_Dalglish Посмотреть сообщение
    PHP код:
    forward Block_Ip_Address_Cheeck();
    public 
    Block_Ip_Address_Cheeck()
    {
        new 
    rows,fieldsIp_Address_Block[17];
        new 
    Ip_Address_Block_Time;
        
    cache_get_data(rowsfields);
        
    cache_get_field_content(0"IP"Ip_Address_Block[16], connect_to_mysql);
        
    Ip_Address_Block_Time cache_get_field_content_int(0"Clock");
        if(
    rows)
        {
            
    BlockIpAddress(Ip_Address_Block[16], Ip_Address_Block_Time);
            
    printf("IP:%s Time: %d",Ip_Address_Block[16], Ip_Address_Block_Time);
            print(
    "Вызыван паблик");
        }

    PHP код:
    [01:36:25IPTime100500
    [01:36:25Вызыван паблик 
    Версия мускула какая? Если R8 - то у вас тут код не правилен вообще.
    Как вы делаете запрос в мускул для того чтобы взять данные из IP и Clock?
    То что у вас сейчас никак работать не будет, нету в функции аргументов дабы узнавался ид игрока и т.д.
    Последний раз редактировалось underwoker; 04.07.2014 в 03:28.
    "Власть, кровь, няш-мяш, кровь, власть, Крым наш!" - (c) Наталья Поклонская.

    Критик должен быть готов и способен в любой момент и по первому требованию занять место критикуемого им и выполнять его дело продуктивно и компетентно. В противном случае критика превращается в наглую, самодовлеющую силу и становится тормозом на пути прогресса. (с) AXE

 

 
Страница 1 из 5 123 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •