4 сообщения в этой теме

Incubus, слов нету.

Как всегда радуешь ;)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть ссылка у кого? хочу эту комманду себе.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Скрытый текст

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
1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас