Question

У меня есть команда prefix и мне нужно сделать что бы когда кто то выдавал префиксы писало в адм чат

        case D_MAKELEADER: {
            if(!response) return 1;
            new ID = GetPVarInt(playerid, "use_leader");
            new frac = GetPVarInt(playerid, "use_frac");
            format(FI[frac][fLeader], 24"%s", player_name[ID]);
            format(FI[frac][fAdmin],  24"%s", player_name[playerid]);

            new year, month, day;
            getdate(year, month, day);
            format(FI[frac][fTime],  53"%02i/%02i/%02i", day, month, year);

            PI[ID][pLeader] = FI[frac][fID];
            PI[ID][pMember] = FI[frac][fID];
            PI[ID][pRank]   = FI[frac][fMaxRang];
            PI[ID][pSpawn] = 2;
            static const f_str[] = ""W"%s"G" назначил Вас лидером организации "P"%s";
            new string[sizeof(f_str) +1 + (-2 + MAX_PLAYER_NAME) + (-2 + 24)];
            if(IsAGang(ID))
            {
                PI[ID][pHospital] = 0;
                SetPlayerHealth(ID, 100);
            }
            format(string,sizeof(string),f_str,player_name[playerid],FI[frac][fName]);
            SendOk(ID,string);

            format(string, sizeof(string), "[A] %s[%d] назначил %s[%d] на пост лидера %s",player_name[playerid],playerid,player_name[ID],ID,FI[frac][fName]);
            AdmMSG(0xAFAFAFAA, string,1);
            
            PI[ID][pFracSkin] = FI[frac][fSkin];
            PI[ID][pJob]        = 0;
            A_SetPlayerSkin(ID,PI[ID][pFracSkin]);
            SetPlayerColor(ID,gFractionSpawn[PI[ID][pMember]][fracColor]);
            start_work[ID] = 1;
            PI[ID][pSpawn] = 2;
            SaveAccount(ID);
            SaveFraction(frac);
            add_datefrac(ID);
        }

С этого стока можно взять проверку но как её изменить на нужную

значение префикса в бд записывается в pPrefix

CMD:setprefix(playerid, params[])
{
    if(PI[playerid][pAdmin] < 5 || dostup[playerid] == 0return true;
    if(sscanf(params, "ds[120]",params[0], params[1], params[2])) return SendEsp(playerid, "/setprefix [ID] [èìÿ ïðåôèêñà]");//[èä öâåòà]

    // PI[params[0]][pPrefix] = params[1];
    strmid(PI[params[0]][pPrefix],params[1], 0, strlen(params[1]), 32);
    PI[params[0]][pPrefixColor] = params[2];
    // UpdatePlayerData(params[0],"pPrefix", PI[params[0]][pPrefix]);

    new query[300];
    format(query,sizeof(query),"UPDATE `accounts` SET `pPrefix` = '%s' WHERE `pID` = '%d' LIMIT 1",PI[params[0]][pPrefix],PI[params[0]][pID]);
    mysql_tquery(connects, query,"","");

    format(query,sizeof(query),"UPDATE `accounts` SET `pPrefixColor` = '%s' WHERE `pID` = '%d' LIMIT 1",PI[params[0]][pPrefixColor],PI[params[0]][pID]);
    mysql_tquery(connects, query,"","");
    return true;
}

 

Share this post


Link to post

14 answers to this question

  • 1
CMD:setprefix(playerid, params[])
{
    if(PI[playerid][pAdmin] < 5 || dostup[playerid] == 0return true;
    if(sscanf(params, "ds[120]",params[0], params[1])) return SendEsp(playerid, "/setprefix [ID] [имя префикса]");//[ид цвета]


    new query[144];
    format(query,sizeof(query),"UPDATE `accounts` SET `pPrefix` = '%s' WHERE `pID` = '%d' LIMIT 1",params[1],PI[params[0]][pID]);
    mysql_tquery(connects, query,"","");

    new string[128];      
    format(string, sizeof(string), "%s выдал префикс %s администратору %s", player_name[playerid], params[1], player_name[params[0]]);  
    AdmMSG(0xAFAFAFAA, string,1);
    return true;
}

Замените полностью команду

Edited by Holmo

Share this post


Link to post
  • 0

@viktor666 перед return true команды setprefix можно добавить это:

new string[128];
format(string, sizeof(string), "%s выдал префикс %s администратору %s", PI[playerid][pName], PI[params[0]][pPrefix], PI[params[0]][pName]);
AdmMSG(0xAFAFAFAA, string,1);

 

Share this post


Link to post
  • 0

@keyl Так?

CMD:setprefix(playerid, params[])
{
    if(PI[playerid][pAdmin] < 5 || dostup[playerid] == 0return true;
    new string[128];
    format(string, sizeof(string), "%s выдал префикс %s администратору %s", PI[playerid][pName], PI[params[0]][pPrefix], PI[params[0]][pName]);
    AdmMSG(0xAFAFAFAA, string,1);
    if(sscanf(params, "ds[120]",params[0], params[1], params[2])) return SendEsp(playerid, "/setprefix [ID] [имя префикса]");//[ид цвета]

    // PI[params[0]][pPrefix] = params[1];
    strmid(PI[params[0]][pPrefix],params[1], 0, strlen(params[1]), 32);
    PI[params[0]][pPrefixColor] = params[2];
    // UpdatePlayerData(params[0],"pPrefix", PI[params[0]][pPrefix]);

    new query[300];
    format(query,sizeof(query),"UPDATE `accounts` SET `pPrefix` = '%s' WHERE `pID` = '%d' LIMIT 1",PI[params[0]][pPrefix],PI[params[0]][pID]);
    mysql_tquery(connects, query,"","");

    format(query,sizeof(query),"UPDATE `accounts` SET `pPrefixColor` = '%s' WHERE `pID` = '%d' LIMIT 1",PI[params[0]][pPrefixColor],PI[params[0]][pID]);
    mysql_tquery(connects, query,"","");
    

 

и проблема 

 : error 017: undefined symbol "pName"; did you mean "fName"?



1 Error.

 

скорее всего место pName нужно 

player_name т.к в pinfo нет pname

но как это сделать

 

Share this post


Link to post
  • 0

сделал так format(string, sizeof(string), "%s выдал префикс %s администратору %s", player_name[playerid], PI[params[0]][pPrefix], player_name[playerid]); щас проверю работу

 

Сделал так 

    format(string, sizeof(string), "%s выдал префикс %s администратору %s", player_name[playerid], playerid,player_name[params[0]][pPrefix], player_name[playerid]);

Но пишет только Carlo_JJ выдал префикс администратору а мне нужно Carlo_JJ выдал префикс ГА администратору Carlo_JJ

Как сделать? помогите

Share this post


Link to post
  • 0

@Holmo 

Но пишет только Carlo_JJ выдал префикс администратору а мне нужно Carlo_JJ выдал префикс ГА администратору Carlo_JJ

Как сделать? помогите

Share this post


Link to post
  • 0

полную команду скиньте и скриншот из игры после того, как выдали префикс

Share this post


Link to post
  • 0
CMD:setprefix(playerid, params[])
{
    if(PI[playerid][pAdmin] < 5 || dostup[playerid] == 0return true;
    new string[128];
    format(string, sizeof(string), "%s выдал префикс %s администратору %s", player_name[playerid], playerid,player_name[params[0]][pPrefix], player_name[playerid]);
    AdmMSG(0xAFAFAFAA, string,1);
    if(sscanf(params, "ds[120]",params[0], params[1], params[2])) return SendEsp(playerid, "/setprefix [ID] [имя префикса]");//[ид цвета]

    // PI[params[0]][pPrefix] = params[1];
    strmid(PI[params[0]][pPrefix],params[1], 0, strlen(params[1]), 32);
    PI[params[0]][pPrefixColor] = params[2];
    // UpdatePlayerData(params[0],"pPrefix", PI[params[0]][pPrefix]);

    new query[300];
    format(query,sizeof(query),"UPDATE `accounts` SET `pPrefix` = '%s' WHERE `pID` = '%d' LIMIT 1",PI[params[0]][pPrefix],PI[params[0]][pID]);
    mysql_tquery(connects, query,"","");

    format(query,sizeof(query),"UPDATE `accounts` SET `pPrefixColor` = '%s' WHERE `pID` = '%d' LIMIT 1",PI[params[0]][pPrefixColor],PI[params[0]][pID]);
    mysql_tquery(connects, query,"","");
    return true;
}

 

Share this post


Link to post
  • 0

а каким образом должно показывать выданный префикс, если вы сделали отправку сообщения до ВСЕХ проверок? o.O
 

new string[128];  

format(string, sizeof(string), "%s выдал префикс %s администратору %s", player_name[playerid], playerid,player_name[params[0]][pPrefix], player_name[playerid]);     
AdmMSG(0xAFAFAFAA, string,1);

в конец это просто добавьте, а в начале удалите...

Edited by Holmo

Share this post


Link to post
  • 0

 

@Holmo так?

CMD:setprefix(playerid, params[])
{
    if(PI[playerid][pAdmin] < 5 || dostup[playerid] == 0return true;
    if(sscanf(params, "ds[120]",params[0], params[1], params[2])) return SendEsp(playerid, "/setprefix [ID] [имя префикса]");//[ид цвета]

    // PI[params[0]][pPrefix] = params[1];
    strmid(PI[params[0]][pPrefix],params[1], 0, strlen(params[1]), 32);
    PI[params[0]][pPrefixColor] = params[2];
    // UpdatePlayerData(params[0],"pPrefix", PI[params[0]][pPrefix]);

    new query[300];
    format(query,sizeof(query),"UPDATE `accounts` SET `pPrefix` = '%s' WHERE `pID` = '%d' LIMIT 1",PI[params[0]][pPrefix],PI[params[0]][pID]);
    mysql_tquery(connects, query,"","");

    format(query,sizeof(query),"UPDATE `accounts` SET `pPrefixColor` = '%s' WHERE `pID` = '%d' LIMIT 1",PI[params[0]][pPrefixColor],PI[params[0]][pID]);
    mysql_tquery(connects, query,"","");
    new string[128];
    format(string, sizeof(string), "%s выдал префикс %s администратору %s", player_name[playerid], playerid,player_name[params[0]][pPrefix], player_name[playerid]);
    AdmMSG(0xAFAFAFAA, string,1);
    return true;
}

 

Edited by viktor666

Share this post


Link to post
  • 0

да, всё верно

 

Share this post


Link to post
  • 0

@Holmo такая проблема теперь пишет Carlo_JJ выдал префикс администратору arlo_JJ (1 буквы ника не хватает) и не пишет какой префикс выдали ("%s выдал префикс %s администратору %s")

Share this post


Link to post
  • 0
new string[128];     

format(string, sizeof(string), "%s выдал префикс %s администратору %s", player_name[playerid], player_name[params[0]][pPrefix], player_name[params[0]]); 
AdmMSG(0xAFAFAFAA, string,1);

замените.

Share this post


Link to post
  • 0

@Holmo Carlo_JJ выдал префикс arlo_JJ администратору Carlo_JJ теперь(нужно что бы место arlo_JJ было название префикса)

 

@Holmo Понял что мой гавнокод нужно менять и решил переписать )

Помогло.

Закрыто

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • katarochqa
      By katarochqa
      Привет, друг! Я набираю людей в команду разработчиков! Если тебе нравится работать в PAWNO, заниматься 3D моделирование, фотошопить, то мы ждем именно тебя!
      Для связи:
      VK:https://vk.com/evdokimovrussia