Перевод кредитов игроку(Пофиксить)

x330122

Участник
Сообщения
357
Реакции
152
Привет народ, можете помочь пофиксить ошибку с кодом ?
Проблема со строками :
C-подобный:
        Store_SetClientCredits(client, Store_GetClientCredits(client)-credits);
        Store_SetClientCredits(target_list[i], Store_GetClientCredits(target_list[i])+credits);
Если поставить credits(i), то переведется рандомное количество кредитов, а не столько сколько указано в аргументе. :(
P.S ^ Круглые скобки потому-что если поставить квадратые то форум не видит их
Сам код:
C-подобный:
public Action Command_ShowCredits(client,args)
{
    decl String:target[65];
    decl String:credits[65];
    decl String:target_name[MAX_TARGET_LENGTH];
    decl target_list[MAXPLAYERS];
    decl target_count;
    decl bool:tn_is_ml;
    if (args < 2)
    {
        ReplyToCommand(client, "[SM] Используй !crtransfer <ник игрока или ID>,  <кол-во кредитов>.");
        return Plugin_Handled;
    }
   
    GetCmdArg(1, target, sizeof(target));
    GetCmdArg(2, credits, sizeof(credits));
   
    if((target_count = ProcessTargetString(
                    target,
                    client,
                    target_list,
                    MAXPLAYERS,
                    0,
                    target_name,
                    sizeof(target_name),
                    tn_is_ml)) <= 0)
    {
        ReplyToTargetError(client, target_count);
        return Plugin_Handled;
    }
   
    for(new i = 0; i < target_count; i++)
    {
        if(GetClientUserId(target_list[i]) == GetClientUserId(client))
        {
            CPrintToChat(client, "{cyan}Вы не можете переводить кредиты самому себе.");
        }
        if(Store_GetClientCredits(client) <= 0)
        {
            CPrintToChat(client, "{cyan}У вас недостаточно кредитов.");
            return Plugin_Handled;
        }
        new String:ransfer[225];
        GetClientName(target_list[i], ransfer, sizeof(ransfer));
        CPrintToChat(client, "{cyan}Вы перевели {lime}%s{cyan} игроку {snow}%s", credits, ransfer);
        Store_SetClientCredits(client, Store_GetClientCredits(client)-credits);
        Store_SetClientCredits(target_list[i], Store_GetClientCredits(target_list[i])+credits);
    }
    return Plugin_Handled;
}
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
@Tetragromaton,
PHP:
public Action Command_ShowCredits(client,args)
{
    if (args < 2)
    {
        ReplyToCommand(client, "[SM] Используй !crtransfer <ник игрока или ID>,  <кол-во кредитов>.");
        return Plugin_Handled;
    }

    decl String:target[65];
    decl String:credits[65], iCredits;
    decl String:target_name[MAX_TARGET_LENGTH];
    decl target_list[MAXPLAYERS];
    decl target_count;
    decl bool:tn_is_ml;
    GetCmdArg(1, target, sizeof(target));
    GetCmdArg(2, credits, sizeof(credits));
   
    iCredits = StringToInt(credits);
    if(iCredits < 2)
    {
        CPrintToChat(client, "{cyan}Введите корректное число!");
           return Plugin_Handled;
    }
    if((target_count = ProcessTargetString(
                    target,
                    client,
                    target_list,
                    MAXPLAYERS,
                    0,
                    target_name,
                    sizeof(target_name),
                    tn_is_ml)) <= 0)
    {
        ReplyToTargetError(client, target_count);
        return Plugin_Handled;
    }
    for(new i = 0; i < target_count; i++)
    {
        if(target_list[i] == client)
        {
            continue;
        }
        if(Store_GetClientCredits(client) < iCredits)
        {
            CPrintToChat(client, "{cyan}У вас недостаточно кредитов.");
            return Plugin_Handled;
        }
        CPrintToChat(client, "{cyan}Вы перевели {lime}%i{cyan} игроку {snow}%N", iCredits, target_list[i]);
        Store_SetClientCredits(client, Store_GetClientCredits(client)-iCredits);
        Store_SetClientCredits(target_list[i], Store_GetClientCredits(target_list[i])+iCredits);
    }
    return Plugin_Handled;
}
 

x330122

Участник
Сообщения
357
Реакции
152
Спасибо тебе огромное ! А можно сделать так чтобы игроки могли переводить друг другу кредиты ? Просто когда игрок пытается перевести кредиты другому игроку то у него ничего не происходит т.к у игроков одинаковый иммунитет.
 
Сверху Снизу