Так покажите как делаетеВсем привет, есть массив char sValues[2][128], как из него получить sValues[1]? Когда просто подставляю sValues[1], то получается пустая строка
Спасибо, уже разобрался, нашел в коде примерТак покажите как делаете
Тогда не стоит давать сюда верный ответ, ведь вдруг у кого-то будет такая же проблемаСпасибо, уже разобрался, нашел в коде пример
Нет, админам не очень удобно это.А не проще по id с ним взаимодействовать или меню приделать?
А если одинаковые ники допустим у двух человекНет, админам не очень удобно это.
К тому же, на сервере такой геймплей, что нужно называть ники игрока, а это немного сложно когда там либо непонятные символы, либо иероглифы, либо вообще арабская вязь.
Редкое явление, очень редкое.А если одинаковые ники допустим у двух человек
Неудобно на потолке спать: одеяло спадает.админам не очень удобно это.
Был где-то плагин, который вырезал из ника символы уникода типа иероглифов и смайлов.нужно называть ники игрока, а это немного сложно когда там либо непонятные символы, либо иероглифы, либо вообще арабская вязь.
Всем привет.
Может кто скинуть функцию ренейма игрока если у него в нике символы, которых нет на русской и английской клавиатуры, то есть, что с таким игроком можно было взаимодействовать через консоль по его полному нику.
Ну, или хотя бы скиньте регулярное выражение для SP.
#include <regex>
stock void fn(int client)
{
if(client && IsClientInGame(client))
{
char name[MAX_NAME_LENGTH], err[256], sub[32];
RegexError Regerr;
GetClientName(client, name, sizeof(name));
Regex expr = CompileRegex("[а-яА-ЯЁёа-zA-Z0-9\\W]", PCRE_NOTEMPTY, err, sizeof(err), Regerr);
if(expr != INVALID_HANDLE)
{
int match = expr.Match(name, Regerr, 0);
if(match != -1)
{
for(int i = 0; i < match; i++)
{
expr.GetSubString(i, sub, sizeof(sub), i);
ReplaceString(name, sizeof(name), sub, "", true);
}
SetClientName(client, name);
}
}
else LogMessage("%s", err);
}
}
public void BLock(int iClient)
{
char sValues[2][128]
PrintToChat(iClient, "sValues[1] = Тут что-то написано");
}
public void BLock2(int iClient)
{
char sValues[2][128]
PrintToChat(iClient, "sValues[1] = Не выводит ничего");
}
так ты заполни свои массивы и потом выводи...Подскажите пожалуйста, как получить значение с буфера который находится в другом блоке
Пример:
C-подобный:public void BLock(int iClient) { char sValues[2][128] PrintToChat(iClient, "sValues[1] = Тут что-то написано"); } public void BLock2(int iClient) { char sValues[2][128] PrintToChat(iClient, "sValues[1] = Не выводит ничего"); }
Вот как там где написано "Не выводит ничего" сделать так, чтоб выводило "Тут что-то написано"?
так массив заполнен в 1 блоке, и мне нужно то что он там заполнил вставить во 2 блоктак ты заполни свои массивы и потом выводи...
Весь код нормально отправь
public void CC_OnClientOpenCase(int iClient, int iCaseID, const char[] sTrigger, const char[] sOutCome)
{
if (!strcmp(sTrigger, "vip"))
{
char sValues[2][128]
ExplodeString(sOutCome, "|", sValues, sizeof sValues, sizeof sValues[]);
g_iTime[iClient] = StringToInt(sOutCome);
sGroup = sValues[1];
if (g_iTime[iClient] != -1)
{
g_iTime[iClient] += GetTime();
}
}
}
public void CC_OnInventoryMenuItemSelected(int iClient, const char[] sItem)
{
char sValues[2][128];
int iTime = StringToInt(sValues[0]);
if (VIP_IsClientVIP(iClient)) //Проверка на наличие вип у игрока
{
int iClientTime = VIP_GetClientAccessTime(iClient);
if (iTime)
{
if (iClientTime > 0)
{
VIP_SetClientAccessTime(iClient, iClientTime+iTime);
}
}
else //Группы нет, значит выдаем ее
{
VIP_GiveClientVIP(0, iClient, iTime, sValues[1]);
}
CC_OpenMenu(iClient, 2);
PrintToChatAll("sGroup %s", sValues[1]);
}
так массив заполнен в 1 блоке, и мне нужно то что он там заполнил вставить во 2 блок
ReplaceString(sValues[1], sizeof(sValues[]), sValues[1], sValues[0], true);
error 032: array index out of bounds (variable "sValues")C-подобный:ReplaceString(sValues[2], sizeof(sValues[]), sValues[2], sValues[1], true);
В твоем варианте только создавать переменную, которую будет видно в обоих блоках и туда уже передавать свое значение. А ошибку исправилerror 032: array index out of bounds (variable "sValues")
Вот так пробовал, не помогаетВ твоем варианте только создавать переменную, которую будет видно в обоих блоках и туда уже передавать свое значение. А ошибку исправил
Вот так пробовал, не помогает
szGroup = sValues[1];
StrCopy(szGroup, sizeof(szGroup), sValue[0])
Exception reported: Cannot replace searches of empty stringsC-подобный:ReplaceString(szGroup, sizeof(szGroup), szGroup, sValues[0], true);