Помогите с ReplaceString

Тема в разделе "Программирование / Скриптинг", создана пользователем Саша Шеин, 22 май 2015.

  1. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Всем привет.
    Не могу сделать вывод сообщения в чат.
    Вот мой код поправьте меня:
    Код:
    public Action:Command_Say(client, const String:command[], argc)
    {
    	new String:str[255];
    	ReplaceString(Prefix[client], sizeof(Prefix[]), "{TAG}", g_sRank[client]);
    	ReplaceString(CName[client], sizeof(CName[]), "{NAME}", sName);
    	ReplaceString(Text[client], sizeof(Text[]), "{TEXT}", sMessage);
    	ReplaceString(Prefix[client], sizeof(Prefix[]), "#", "\x07");
    	ReplaceString(CName[client], sizeof(CName[]), "#", "\x07");
    	ReplaceString(Text[client], sizeof(Text[]), "#", "\x07");
    		
    	PrintToChatAll("%s %s \x01: %s",Prefix[client],CName[client],Text[client]);
    	g_hSayTimer[client] = CreateTimer(0.0, Timer_RestoreChat, client);
    	return Plugin_Handled;	
    }
    
    public Action:Timer_RestoreChat(Handle:hTimer, any:client)
    {
    	g_hSayTimer[client] = INVALID_HANDLE;
    	return Plugin_Stop;
    }
    Вот cfg:
    Код:
    		"Prefix"	"[#0011FF{TAG}]"
    		"Name"		"#40E67D{NAME}"
    		"TextColor"		"#0011FF{TEXT}"
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.514
    Симпатии:
    1.967
    Это всё надо сохранять в массив и брать оттуда, а не "перекодировать" каждый раз. Грош цена такому коду.
     
  3. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    А как быть с текстом?
     
  4. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.514
    Симпатии:
    1.967
    Смотря, что ты там хочешь и вытворяешь. В чате пишешь окраску и должно выводить с цветом уже, что ли?
    И зачем вообще таймер? И, кстати, мут-чат на сервере перестанет работать.
     
  5. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.975
    Симпатии:
    2.981
    Саша Шеин, дай больше кода.
    Особенно лоад кфг и всю ф-ю вывода в чат.
     
  6. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    R1KO, Вот:
    PHP:
    public Action:Command_Say(client, const String:command[], argc)
    {
        if ( 
    g_hSayTimer[client] == INVALID_HANDLE )
        {
            new 
    iTime GetTime();
            if ( 
    g_iLastSay[client] > iTime )
            {
                return 
    Plugin_Handled;
            }
            
    g_iLastSay[client] = iTime +2;
            
            
    decl String:sName[64], String:sMessage[256];
            
    GetClientName(clientsNamesizeof(sName) - 1);
            
    GetCmdArgString(sMessagesizeof(sMessage) - 1);
            
    StripQuotes(sMessage);
            
            if ( 
    StrEqual(sMessage"rank") )
            {
                
    Command_Rank(client0);
            }
            else if ( 
    StrEqual(sMessage"top") )
            {
                
    Command_Top(client0);
            }
            
    /*************************/
            
    if ( IsPlayerAlive(client) )
            {
                
    ReplaceString(Text[client], sizeof(Text[]), "{TEXT}"sMessage);            
                
    ReplaceString(Prefix[client], sizeof(Prefix[]), "{TAG}"g_sRank[client]);
                
    ReplaceString(CName[client], sizeof(CName[]), "{NAME}"sName);
                
                
    ReplaceString(Prefix[client], sizeof(Prefix[]), "#""\x07");
                
    ReplaceString(CName[client], sizeof(CName[]), "#""\x07");
                
    ReplaceString(Text[client], sizeof(Text[]), "#""\x07");
                
                
    PrintToChatAll("%s %s \x01: %s",Prefix[client],CName[client],Text[client]);
            }
    /***************************/
            
    else
            {
                if ( 
    GetClientTeam(client) > 1  )
                {
                    
                    
    Format(sMessage255"%s%s*УБИТ* \x01[%s%s%s\x01] %s%s %s \x01: %s%s %s",(Death[client]==0)?"{default}":"\x07",Death[client],(Prefix[client]==0)?"{green}":"\x07",Prefix[client],g_sRank[client],(CName[client]==0)?"{teamcolor}":"\x07",CName[client],sName,(Text[client]==0)?"\x01":"\x07",Text[client],sMessage);
                    
    CPrintToChatAllEx(clientsMessage);
                }
                else
                {
                    
    Format(sMessage255"%s%s*СПЕК* \x01[%s%s%s\x01] %s%s %s \x01: %s%s %s",(Spec[client]==0)?"{default}":"\x07",Spec[client],(Prefix[client]==0)?"{green}":"\x07",Prefix[client],g_sRank[client],(CName[client]==0)?"{teamcolor}":"\x07",CName[client],sName,(Text[client]==0)?"\x01":"\x07",Text[client],sMessage);
                    
    CPrintToChatAllEx(clientsMessage);            
                }
            }
            
    g_hSayTimer[client] = CreateTimer(0.0Timer_RestoreChatclient);
            return 
    Plugin_Handled;
        }
        
        return 
    Plugin_Continue;
    }

    public 
    Action:Timer_RestoreChat(Handle:hTimerany:client)
    {
        
    g_hSayTimer[client] = INVALID_HANDLE;
        return 
    Plugin_Stop;
    }

    PHP:
    stock Sets(iClient)
    {
        if(
    KvJumpToKey(hKvg_sRank[iClient]))
        {
            new 
    iHp KvGetNum(hKv"HP");
            new 
    Float:fGravity KvGetFloat(hKv"GRAVITY");
            new 
    Float:fSpeed KvGetFloat(hKv"SPEED");
            new 
    iArmor KvGetNum(hKv"ARMOR");
            
    decl color[4];
            
    KvGetColor(hKv"COLOR"color[0], color[1], color[2], color[3]);
            
    // SET HP
            
    if (iHp 0)SetEntityHealth(iClientiHp);
            
    // SET GRAVITY
            
    if (fGravity != 0.0)SetEntityGravity(iClientfGravity);
            else 
    SetEntityGravity(iClient1.0);
            
    // SET SPEED
            
    if (fSpeed != 0.0)SetEntPropFloat(iClientProp_Data"m_flLaggedMovementValue"fSpeed);
            
    // SET COLOR
            
    if(color[0] == && color[1] == && color[2] == 0)
            {
                
    SetEntityRenderMode(iClientRENDER_TRANSCOLOR); 
                
    SetEntityRenderColor(iClient255255255255);
            }
            else             
            {
                
    SetEntityRenderMode(iClientRENDER_TRANSCOLOR); 
                
    SetEntityRenderColor(iClientcolor[0], color[1], color[2], 255);
            }
            
    // SET ARMOR
            
    if (iArmor 0)SetEntProp(iClientProp_Data"m_ArmorValue"iArmor);
            
            new 
    String:Name[255];
            
    KvGetString(hKv"WEAPON"Name,255);
            if(
    Name[0]!=0SetWeapon(iClient);
            
            
    // SET CHAT
            
    KvGetString(hKv"Prefix",Prefix[iClient], 50);
            
    KvGetString(hKv"Name",CName[iClient], 7);
            
    KvGetString(hKv"Text",Text[iClient], 7);
            
    KvGetString(hKv"Death",Death[iClient], 7);
            
    KvGetString(hKv"Spec",Spec[iClient], 7);
            
    KvGetString(hKv"ClanTag",ClanTag[iClient], 7);
            
    SetClanTag(iClient);
        }
        
    KvRewind(hKv);
    }
    stock SetClanTag(iClient)
    {
        if(
    iClient)
        {
            if(
    ClanTag[iClient]==0CS_SetClientClanTag(iClient," ");
            else 
    CS_SetClientClanTag(iClient,ClanTag[iClient]);
        }
    }
    stock SetWeapon(iClient)
    {
        
    // GET WEAPON
        
    new String:Name[255];
        
    KvGetString(hKv"WEAPON"Name,255);
        
    iParts ReplaceString(Namesizeof(Name), ";"";-");
        if(
    iParts>0)
        {
            
    decl String:sParts[iParts+1][4096], i;
            
    iParts ExplodeString(Name";-"sPartssizeof(sParts[]), sizeof(sParts[]));
            for(
    0iParts; ++i)
            {
                
    decl String:Weapon[255];
                if(
    StrEqual(sParts[i],"glock")
                    ||
    StrEqual(sParts[i],"usp")
                    ||
    StrEqual(sParts[i],"p228")
                    ||
    StrEqual(sParts[i],"p228")
                    ||
    StrEqual(sParts[i],"deagle")
                    ||
    StrEqual(sParts[i],"fiveseven")
                    ||
    StrEqual(sParts[i],"elite"))
                {
                    new 
    slot GetPlayerWeaponSlot(iClient1); 
                    if (
    slot != -&& RemovePlayerItem(iClientslot)) 
                    { 
                        
    AcceptEntityInput(slot"Kill"); 
                    } 
                }
                if(
    StrEqual(sParts[i],"ak47")
                    ||
    StrEqual(sParts[i],"awp")
                    ||
    StrEqual(sParts[i],"p90")
                    ||
    StrEqual(sParts[i],"m249")
                    ||
    StrEqual(sParts[i],"ump45")
                    ||
    StrEqual(sParts[i],"mp5navy")
                    ||
    StrEqual(sParts[i],"tmp")
                    ||
    StrEqual(sParts[i],"mac10")
                    ||
    StrEqual(sParts[i],"xm1014")
                    ||
    StrEqual(sParts[i],"m3")
                    ||
    StrEqual(sParts[i],"sg550")
                    ||
    StrEqual(sParts[i],"aug")
                    ||
    StrEqual(sParts[i],"m4a1")
                    ||
    StrEqual(sParts[i],"famas")
                    ||
    StrEqual(sParts[i],"g3sg1")
                    ||
    StrEqual(sParts[i],"sg552")
                    ||
    StrEqual(sParts[i],"scout")
                    ||
    StrEqual(sParts[i],"galil"))
                {  
                    new 
    slot GetPlayerWeaponSlot(iClient0); 
                    if (
    slot != -&& RemovePlayerItem(iClientslot)) 
                    { 
                        
    AcceptEntityInput(slot"Kill"); 
                        
    Format(Weaponsizeof(Weapon), "weapon_%s"sParts[i]);
                        
    GivePlayerItem(iClientWeapon);
                    } 
                }
                if(
    StrEqual(sParts[i],"c4"))
                {
                    new 
    slot GetPlayerWeaponSlot(iClient4); 
                    if (
    slot != -&& RemovePlayerItem(iClientslot)) 
                    { 
                        
    AcceptEntityInput(slot"Kill"); 
                    } 
                }
                if(
    StrEqual(sParts[i],"knife"))
                {
                    new 
    slot GetPlayerWeaponSlot(iClient2); 
                    if (
    slot != -&& RemovePlayerItem(iClientslot)) 
                    { 
                        
    AcceptEntityInput(slot"Kill"); 
                    } 
                }
                
    Format(Weaponsizeof(Weapon), "weapon_%s"sParts[i]);
                
    GivePlayerItem(iClientWeapon);
            }
        }
        else
        {
            
    decl String:Weapon[255];
            if(
    StrEqual(Name,"glock")
                ||
    StrEqual(Name,"usp")
                ||
    StrEqual(Name,"p228")
                ||
    StrEqual(Name,"p228")
                ||
    StrEqual(Name,"deagle")
                ||
    StrEqual(Name,"fiveseven")
                ||
    StrEqual(Name,"elite"))
            {
                new 
    slot GetPlayerWeaponSlot(iClient1); 
                if (
    slot != -&& RemovePlayerItem(iClientslot)) 
                { 
                    
    AcceptEntityInput(slot"Kill"); 
                } 
            }
            if(
    StrEqual(Name,"ak47")
                ||
    StrEqual(Name,"awp")
                ||
    StrEqual(Name,"p90")
                ||
    StrEqual(Name,"m249")
                ||
    StrEqual(Name,"ump45")
                ||
    StrEqual(Name,"mp5navy")
                ||
    StrEqual(Name,"tmp")
                ||
    StrEqual(Name,"mac10")
                ||
    StrEqual(Name,"xm1014")
                ||
    StrEqual(Name,"m3")
                ||
    StrEqual(Name,"sg550")
                ||
    StrEqual(Name,"aug")
                ||
    StrEqual(Name,"m4a1")
                ||
    StrEqual(Name,"famas")
                ||
    StrEqual(Name,"g3sg1")
                ||
    StrEqual(Name,"sg552")
                ||
    StrEqual(Name,"scout")
                ||
    StrEqual(Name,"galil"))
            {  
                new 
    slot GetPlayerWeaponSlot(iClient0); 
                if (
    slot != -&& RemovePlayerItem(iClientslot)) 
                { 
                    
    AcceptEntityInput(slot"Kill"); 
                    
    Format(Weaponsizeof(Weapon), "weapon_%s"Name);
                    
    GivePlayerItem(iClientWeapon);
                } 
            }
            if(
    StrEqual(Name,"c4"))
            {
                new 
    slot GetPlayerWeaponSlot(iClient4); 
                if (
    slot != -&& RemovePlayerItem(iClientslot)) 
                { 
                    
    AcceptEntityInput(slot"Kill"); 
                } 
            }
            if(
    StrEqual(Name,"knife"))
            {
                new 
    slot GetPlayerWeaponSlot(iClient2); 
                if (
    slot != -&& RemovePlayerItem(iClientslot)) 
                { 
                    
    AcceptEntityInput(slot"Kill"); 
                } 
            }
            
    Format(Weaponsizeof(Weapon), "weapon_%s"Name);
            
    GivePlayerItem(iClientWeapon);
        }
    }

    Во вложениях это файл: OnPluginStart.sp Строки 605-616 & 707-712
     

    Вложения:

    • scripting.zip
      Размер файла:
      39,9 КБ
      Просмотров:
      3
  7. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Что за баги?
    [​IMG]
     
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.975
    Симпатии:
    2.981
    Делай
    PHP:
     ReplaceString(Text[client], sizeof(Text[]), "{TEXT}"sMessage);            
                
    ReplaceString(Prefix[client], sizeof(Prefix[]), "{TAG}"g_sRank[client]);
                
    ReplaceString(CName[client], sizeof(CName[]), "{NAME}"sName);
                
                
    ReplaceString(Prefix[client], sizeof(Prefix[]), "#""\x07");
                
    ReplaceString(CName[client], sizeof(CName[]), "#""\x07");
                
    ReplaceString(Text[client], sizeof(Text[]), "#""\x07");
    Сразу после
    PHP:
    KvGetString(hKv"Prefix",Prefix[iClient], 50);
            
    KvGetString(hKv"Name",CName[iClient], 7);
            
    KvGetString(hKv"Text",Text[iClient], 7);
            
    KvGetString(hKv"Death",Death[iClient], 7);
            
    KvGetString(hKv"Spec",Spec[iClient], 7);
            
    KvGetString(hKv"ClanTag",ClanTag[iClient], 7);

    Не понимаю зачем постоянно прыгать по кв?
    PHP:
    stock Sets(iClient)
    {
        if(
    KvJumpToKey(hKvg_sRank[iClient]))
        {