wickedside
Участник
- Сообщения
- 3
- Реакции
- 0
Привет, у меня в целом проблема заключается в том, что у меня стоит шоп [NCS Shop] и я хочу, чтобы выдавалось серебро в конкурсе за правильный ответ в чате для него, а не для шопа, который прописан в плагине тык, пробовал сам сделать, но в итоге ошибок много. Буду благодарен за помощь. 
Сам плагин где нужно внести изменения:
Строка в ncs_shop.sp, которая содержит функцию изменения серебра:
Код в cmds.ini, который описывает работу функции SetSilver:
Прикрепил архив с исходниками.

Сам плагин где нужно внести изменения:
shop_mathcredits_edition.sp:
public void OnClientSayCommand_Post(int client, const char[] command, const char[] sArgs)
{
if(timerQuestionEnd && StringToInt(sArgs) == questionResult && (questionResult || strcmp(sArgs, "0") == 0))
{
int clients[1];
Shop_GiveClientCredits(clients[0] = client, credits); //тут нужно заменить команду выдачи для ncs shop'a
PrintHintText(clients[0], "Вы получили %i кредитов.", credits); //CS:S
//PrintHintText(clients[0], "Вы получили <font color='#00FF1E'>%i</font> кредитов.", credits); //CS:GO
SendEndQuestion(clients[0]);
EmitSound(clients, 1, soundplay);
}
}
ncs_shop.sp:
CreateNative("SetSilver", Native_SetSilver);
cmds.ini:
public Action:Command_Silver(client, args) // address: 137892
{
if (args < 3)
{
CReplyToCommand(client, "{fullred}[{aqua}NCS SHOP{fullred}]{default} %T", "Use: sm_silver <take/set/add> <player> <amount>", client);
return Plugin_Handled;
}
decl String:name[32], String:buffer[64];
GetCmdArg(2, name, 32);
new bool:ml = true, targets[65];
new count = ProcessTargetString(name, client, targets, 65, 4, buffer, 64, ml);
if (count <= 0)
{
ReplyToTargetError(client, count);
return Plugin_Handled;
}
new mode = -1;
GetCmdArg(1, buffer, 64);
if (StrEqual(buffer, "take", false))
{
mode = 0;
}
else
{
if (StrEqual(buffer, "set", false))
{
mode = 1;
}
else
{
if (StrEqual(buffer, "add", false))
{
mode = 2;
}
else
{
CReplyToCommand(client, "{fullred}[{aqua}NCS SHOP{fullred}]{default} %T", "Use: sm_silver <take/set/add> <player> <amount>", client);
return Plugin_Handled;
}
}
}
GetCmdArg(3, buffer, 64);
new amount = StringToInt(buffer, 10);
for (new i = 0; i < count; i++)
{
if (!HasAdminFlags(client, iAdminFlagRoot) && targets[i] != client)
{
CReplyToCommand(client, "{fullred}[{aqua}NCS SHOP{fullred}]{default} %T", "You cannot use the admin area on the other!", client);
continue;
}
switch (mode)
{
case 0:
{
if (cfg_bUseAdminLogs)
{
GetClientSteamID(client, buffer, 64);
GetClientAuthId(targets[i], AuthId_Steam2, name, 32, true);
LogToFile(sAdminLogPath, "%t", "Logs: Admin: take silver", targets[i], amount, client, buffer, name);
}
if (GetAdminName(client, name, 32))
{
CPrintToChatAll("{fullred}[{aqua}NCS SHOP{fullred}]{default} %T", "Admin: take silver", client, targets[i], amount, name);
}
SetSilver(targets[i], GetSilver(targets[i]) - amount);
}
case 1:
{
if (cfg_bUseAdminLogs)
{
GetClientSteamID(client, buffer, 64);
GetClientAuthId(targets[i], AuthId_Steam2, name, 32, true);
LogToFile(sAdminLogPath, "%t", "Logs: Admin: set silver", targets[i], amount, client, buffer, name);
}
if (GetAdminName(client, name, 32))
{
CPrintToChatAll("{fullred}[{aqua}NCS SHOP{fullred}]{default} %T", "Admin: set silver", client, targets[i], amount, name);
}
SetSilver(targets[i], amount);
}
case 2:
{
if (cfg_bUseAdminLogs)
{
GetClientSteamID(client, buffer, 64);
GetClientAuthId(targets[i], AuthId_Steam2, name, 32, true);
LogToFile(sAdminLogPath, "%t", "Logs: Admin: add silver", targets[i], amount, client, buffer, name);
}
if (GetAdminName(client, name, 32))
{
CPrintToChatAll("{fullred}[{aqua}NCS SHOP{fullred}]{default} %T", "Admin: add silver", client, targets[i], amount, name);
}
SetSilver(targets[i], GetSilver(targets[i]) + amount); //эта строка как я понимаю должна быть реализована в плагине конкурса
}
}
}
return Plugin_Handled;
}
Прикрепил архив с исходниками.