Проблема с заменой строк
| |
Vitaminoz
|
Дата: Вторник, 24.12.2013, 23:02:14 | Сообщение # 1 |
|
Сообщений: 141
Репутация: 1 [ +/- ]
|
|
Ребят помогите пожалуйста с кодом уже сил нету : Код #include <sourcemod> #include <sdktools_functions>
new Handle:h_botname; new String:bot_name_prefix_get[MAX_NAME_LENGTH]; //new StringLenght;
public Plugin:myinfo = { name = "Bot Prefix", author = "Vitamin", description = "Changed Zombie Prefix (used command bot_prefix)", version = "1.0", url = "" } public OnPluginStart() { h_botname = CreateConVar("bot_prefix_zombie","[Zombie]" , "Set Zombie Prefix"); HookConVarChange(h_botname,Prefix_Changed); } public Prefix_Changed(Handle:convar, const String:oldValue[], const String:newValue[]) { GetConVarString(convar, bot_name_prefix_get, sizeof(bot_name_prefix_get)); decl String:bot_name_prefix[MAX_NAME_LENGTH]; decl String:bot_name[MAX_NAME_LENGTH]; decl String:bot_name_old_prefix[MAX_NAME_LENGTH]; for (new i = 1; i <= GetTeamClientCount(2); i++) { if (IsFakeClient(i)) { GetClientName(i, bot_name, sizeof(bot_name)); if (StrContains(bot_name, bot_name_old_prefix)) { ReplaceString(bot_name, sizeof(bot_name), bot_name_old_prefix, bot_name_prefix_get); SetClientInfo(i, "name", bot_name); } else { Format(bot_name_prefix, sizeof(bot_name_prefix), "%s %s", bot_name_prefix_get, bot_name); SetClientInfo(i, "name", bot_name_prefix); } //PrintToServer("%s | %s | %s", bot_name_prefix, bot_name, bot_name_prefix_get) } } bot_name_old_prefix = bot_name_prefix_get; //PrintToServer(bot_name_old_prefix); } Никак не могу понять почему не работает. Сначала пишу bot_prefix_zombie lol - все работает Потом пишу bot_prefix_zombie df - работает но к нику с префиксом lol добавляется df (вроде сделал функцию удаления этого старого префикса но не работает) Если какие то проблемы есть скажите просто новичок в SourcePawn.
Сообщение отредактировал Vitaminoz - Вторник, 24.12.2013, 23:02:49 |
|
| |
TEIN
|
Дата: Среда, 25.12.2013, 15:26:42 | Сообщение # 2 |
|
Сообщений: 563
Репутация: 78 [ +/- ]
|
|
Код #include <sourcemod> #include <sdktools_functions>
new Handle:CVAR_BotName = INVALID_HANDLE;
public OnPluginStart() { CVAR_BotName = CreateConVar("bot_prefix_zombie", "test"); HookConVarChange(CVAR_BotName, OnConVarChange_BotName); }
public OnConVarChange_BotName(Handle:convar, const String:oldValue[], const String:newValue[]) { if (strcmp(oldValue, newValue, true) != 0) { decl String:name[50]; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && GetClientTeam(i) == 2 && IsFakeClient(i)) { GetClientName(i, name, sizeof(name)); ReplaceString(name, sizeof(name), oldValue, newValue); SetClientInfo(i, "name", name); } } } }
|
|
| |
Vitaminoz
|
Дата: Среда, 25.12.2013, 21:47:06 | Сообщение # 3 |
|
Сообщений: 141
Репутация: 1 [ +/- ]
|
|
Как ты работаешь с переменной если ты не получил ей (GetConVarString) ? У меня код твой не работает.
|
|
| |
BeatMaker_R1KO_
|
Дата: Среда, 25.12.2013, 22:37:41 | Сообщение # 4 |
|
Сообщений: 60
Репутация: 0 [ +/- ]
|
|
Цитата Vitaminoz ( ) Как ты работаешь с переменной если ты не получил ей (GetConVarString) ? А зачем ему её получать ? Он обрабатывает всё при смене квара, в const String:newValue[] записывается ее значение.
|
|
| |
Vitaminoz
|
Дата: Пятница, 03.01.2014, 01:49:50 | Сообщение # 5 |
|
Сообщений: 141
Репутация: 1 [ +/- ]
|
|
Понял. Но код не работает.
Добавлено (02.01.2014, 03:12:32) --------------------------------------------- Сделал новый плагин все работает кроме строчки №17 (а именно -> if (!StrEqual(oldValue, ""))) уже голову сломал что не так ... Если переменная bot_prefix_t не пустая то все нормально,а если наоборот то проблемы ... Код #include <sourcemod> #include <cstrike> #include <sdktools_functions>
new Handle:h_cvar_botname; new String:bot_name[MAX_NAME_LENGTH];
public OnPluginStart() { h_cvar_botname = CreateConVar("bot_prefix_t", "", "Set bot prefix only for CT", FCVAR_NOTIFY); HookConVarChange(h_cvar_botname, BotPrefix_Function); HookEvent("player_team", Hook_PlayerTeam); }
public BotPrefix_Function(Handle:convar, const String:oldValue[], const String:newValue[]) { if (!StrEqual(oldValue, "")) { for (new i_Client = 1; i_Client <= GetClientCount(); i_Client++) { if (IsFakeClient(i_Client) && GetClientTeam(i_Client) == CS_TEAM_T) { GetClientName(i_Client, bot_name, sizeof(bot_name)); if (StrContains(oldValue, bot_name)) { ReplaceString(bot_name, sizeof(bot_name), oldValue, newValue); SetClientInfo(i_Client, "name", bot_name); } } } } }
public Hook_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast) { decl String:bot_prefix[16]; new client = GetClientOfUserId(GetEventInt(event, "userid")); GetConVarString(h_cvar_botname, bot_prefix, sizeof(bot_prefix)); if (!StrEqual("", bot_prefix) && client != 0 && IsFakeClient(client) && GetEventInt(event, "team") == CS_TEAM_T) { decl String:bot_name_event[16]; GetEventString(event, "name", bot_name_event, sizeof(bot_name_event)); Format(bot_name, sizeof(bot_name), "%s %s", bot_prefix, bot_name_event); SetClientInfo(client, "name", bot_name); } } Добавлено (03.01.2014, 01:49:50) --------------------------------------------- Здесь вообще помогают ?
Сообщение отредактировал Vitaminoz - Четверг, 02.01.2014, 03:17:19 |
|
| |
Sallcom
|
Дата: Пятница, 03.01.2014, 19:17:17 | Сообщение # 6 |
|
Сообщений: 205
Репутация: 31 [ +/- ]
|
|
Цитата Vitaminoz ( ) decl String:bot_prefix[16]; Цитата Vitaminoz ( ) if (!StrEqual("", bot_prefix)
Я сталкивался с такой проблемой, попробуй не decl а new или if(strlen(bot_prefix) != 0)
Сообщение отредактировал Sallmap - Пятница, 03.01.2014, 19:17:34 |
|
| |
Vitaminoz
|
Дата: Суббота, 04.01.2014, 22:21:50 | Сообщение # 7 |
|
Сообщений: 141
Репутация: 1 [ +/- ]
|
|
Помог метод с strlen. Спасибо !
|
|
| |
|