Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Проблема с заменой строк
Проблема с заменой строк
Vitaminoz Дата: Вторник, 24.12.2013, 23:02:14 | Сообщение # 1
Сообщений: 142
Репутация: 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
Сообщений: 142
Репутация: 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
Сообщений: 142
Репутация: 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
Сообщений: 142
Репутация: 1 [ +/- ]
Помог метод с strlen. Спасибо !
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Проблема с заменой строк
  • Страница 1 из 1
  • 1
Поиск: