Перейти к содержанию

@loginfo


Рекомендуемые сообщения

  • 3 года спустя...
  • 7 месяцев спустя...

 

Скрытый текст
ACMD_FUNC(loginfo)
{
       char name[NAME_LENGTH],date[10], cname[NAME_LENGTH], ref[5] = "+";
       int char_id, nameid, year, month, day, i=0,k=1;
       struct {
               char map[50][50],type[50][1],time[50][20];
               int amount[50],refine[50];
       } log;
       char* data;
       size_t len;
       struct item_data* item;
       
       memset(&log, 0, sizeof(log));

       if(sscanf(message, "%23[^,], %d, %23[^,]", name, &nameid, date) == 3)
       {
               if(sscanf(date,"%d-%d-%d",&year,&month,&day) !=3)
               {
                       clif_displaymessage(fd,"Введи правильно дату");
                       clif_displaymessage(fd,"гггг-мм-дд");
                       return 0;
               }
       
               if( SQL_ERROR == Sql_Query(mmysql_handle,"SELECT `char_id`,`name` FROM `char` WHERE `name` = '%s'",name))
               {
                       Sql_ShowDebug(mmysql_handle);
                       Sql_FreeResult(mmysql_handle);
                       return 0;
               }
               
               if( SQL_SUCCESS == Sql_NextRow(mmysql_handle) )
                       Sql_GetData(mmysql_handle, 0, &data, &len); char_id = atoi(data);
                       Sql_GetData(mmysql_handle, 1, &data, &len); strcpy(cname,data);
               Sql_FreeResult(mmysql_handle);
               
               if(strcmp(cname,name) != 0)
               {
                       clif_displaymessage(fd,"Чар с таким ником не найден.");
                       return 0;
               }
       
               if(!(item = itemdb_exists(nameid)))
               {
                       clif_displaymessage(fd,"ID вещи введено не верно.");
                       return 0;
               }

               if( SQL_ERROR == Sql_Query(mmysql_handle,"SELECT time,type,amount,refine,map FROM picklog WHERE char_id = '%d' AND nameid = '%d'",char_id,nameid))
               {
                       Sql_ShowDebug(mmysql_handle);
                       Sql_FreeResult(mmysql_handle);
                       return 0;
               }
               while( SQL_SUCCESS == Sql_NextRow(mmysql_handle) )
               {
                       Sql_GetData(mmysql_handle, 0, &data, &len); 

                       if(!strstr(data,date))
                               continue;

                       strncpy(&log.time[i][20],data,strlen(data));
                       
                       Sql_GetData(mmysql_handle, 1, &data, &len); log.type[i+1][0] = data[0];
                       Sql_GetData(mmysql_handle, 2, &data, &len); log.amount[i+1] = atoi(data);
                       Sql_GetData(mmysql_handle, 3, &data, &len); log.refine[i+1] = atoi(data);
                       Sql_GetData(mmysql_handle, 4, &data, &len); strcpy(&log.map[i][50],data);
                       i++;
               }
               Sql_FreeResult(mmysql_handle);
               
               if(i == 0)
               {
                       clif_displaymessage(fd,"По данному запросу ничего не найдено.");
                       return 0;
               }

               while(k <= i)
               {
                       int m=0;
                       char operation[50], output[1024], char_name[NAME_LENGTH];

                       if(log.type[k][0] == 'T' || log.type[k][0] == 'V')
                       {
                               if( SQL_ERROR == Sql_Query(mmysql_handle,
                               "SELECT `char`.`name` FROM `char`,`picklog` WHERE `time` = '%s' AND `picklog`.`char_id` != '%d' AND `type` = '%c' AND `nameid` = '%d' AND `map` = '%s' AND `picklog`.`char_id` = `char`.`char_id`",log.time[k],char_id,log.type[k][0],nameid,log.map[k]))
                               {
                                       Sql_ShowDebug(mmysql_handle);
                                       Sql_FreeResult(mmysql_handle);
                                       return 0;
                               }

                               if( SQL_SUCCESS == Sql_NextRow(mmysql_handle) )
                               {
                                       Sql_GetData(mmysql_handle, 0, &data, &len); strcpy(char_name,data);
                               }
                               Sql_FreeResult(mmysql_handle);
                       }
                       memset(operation, '\0', sizeof(operation));
                       memset(output, '\0', sizeof(output));
                       memset(ref, '\0', sizeof(ref));
                       
                       if(log.refine[k] > 0)
                               sprintf(ref,"+%d",log.refine[k]);
                       switch(log.type[k][0])
                       {
                               case 'T':
                                       if(log.amount[k] > 0)
                                               sprintf(operation,"получил от %s",char_name);
                                       else
                                               sprintf(operation,"передал %s'у",char_name);
                               break;
                               
                               case 'V':
                                       if(log.amount[k] > 0)
                                               sprintf(operation,"купил у %s",char_name);
                                       else
                                               sprintf(operation,"продал %s'у",char_name);
                               break;
                               
                               case 'P':
                                       if(log.amount[k] > 0)
                                               strcpy(operation,"подобрал");
                                       else
                                               strcpy(operation,"выкинул");
                               break;
                               
                               case 'S':
                                       if(log.amount[k] > 0)
                                               strcpy(operation,"купил");
                                       else
                                               strcpy(operation,"продал");
                               break;

                               case 'N':
                                       if(log.amount[k] > 0)
                                               strcpy(operation,"получил у НПЦ");
                                       else
                                               strcpy(operation,"отдал НПЦ");
                               break;
                               
                               case 'D':                                       // Может не использоваться на некоторых эмулях
                                               strcpy(operation,"украл");
                               break;
                               
                               case 'C':
                                               strcpy(operation,"использовал");
                               break;
                               
                               case 'O':                                       // Может не использоваться на некоторых эмулях
                                       if(log.amount[k] > 0)
                                               strcpy(operation,"изготовил");
                                       else
                                               strcpy(operation,"для изготовления отдал");
                               break;
                               
                               case 'U':                                       // Может не использоваться на некоторых эмулях
                                               strcpy(operation,"получил с MvP");
                               break;
                               
                               case 'A':
                                       if(log.amount[k] > 0)
                                               strcpy(operation,"получил командой");
                                       else
                                               strcpy(operation,"удалил командой");
                               break;
                               
                               case 'R':
                                       if(log.amount[k] > 0)
                                               strcpy(operation,"достал из кафры");
                                       else
                                               strcpy(operation,"положил в кафру");
                               break;
                               
                               case 'G':
                                       if(log.amount[k] > 0)
                                               strcpy(operation,"достал из гильд кафры");
                                       else
                                               strcpy(operation,"положил в гильд кафру");
                               break;
                               
                               case 'E':
                                       if(log.amount[k] > 0)
                                               strcpy(operation,"получил по почте");
                                       else
                                               strcpy(operation,"передал по почте");
                               break;
                               
                               case 'I':                                       // Может не использоваться на некоторых эмулях
                                       if(log.amount[k] > 0)
                                               strcpy(operation,"получил с аукциона");
                                       else
                                               strcpy(operation,"отдал на аукцион");
                               break;
                       }
                       sprintf(output,"[%s] %s %s %s%s[%dшт.] на карте: %s",log.time[k],cname,operation,ref,item->jname,abs(log.amount[k]),log.map[k]);
                       clif_displaymessage(fd,output);
                       k++;
               }
       }
       return 0;
}

 

 

Изменено пользователем Sky
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...
×
×
  • Создать...
Яндекс.Метрика