Помогите с ReplaceString

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Всем привет.
Не могу сделать вывод сообщения в чат.
Вот мой код поправьте меня:
C-подобный:
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:
C-подобный:
		"Prefix"	"[#0011FF{TAG}]"
		"Name"		"#40E67D{NAME}"
		"TextColor"		"#0011FF{TEXT}"
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
как быть с текстом?
Смотря, что ты там хочешь и вытворяешь. В чате пишешь окраску и должно выводить с цветом уже, что ли?
И зачем вообще таймер? И, кстати, мут-чат на сервере перестанет работать.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #5
Саша Шеин, дай больше кода.
Особенно лоад кфг и всю ф-ю вывода в чат.
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
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(client, sName, sizeof(sName) - 1);
		GetCmdArgString(sMessage, sizeof(sMessage) - 1);
		StripQuotes(sMessage);
		
		if ( StrEqual(sMessage, "rank") )
		{
			Command_Rank(client, 0);
		}
		else if ( StrEqual(sMessage, "top") )
		{
			Command_Top(client, 0);
		}
		/*************************/
		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(sMessage, 255, "%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(client, sMessage);
			}
			else
			{
				Format(sMessage, 255, "%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(client, sMessage);			
			}
		}
		g_hSayTimer[client] = CreateTimer(0.0, Timer_RestoreChat, client);
		return Plugin_Handled;
	}
	
	return Plugin_Continue;
}

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

PHP:
stock Sets(iClient)
{
	if(KvJumpToKey(hKv, g_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(iClient, iHp);
		// SET GRAVITY
		if (fGravity != 0.0)SetEntityGravity(iClient, fGravity);
		else SetEntityGravity(iClient, 1.0);
		// SET SPEED
		if (fSpeed != 0.0)SetEntPropFloat(iClient, Prop_Data, "m_flLaggedMovementValue", fSpeed);
		// SET COLOR
		if(color[0] == 0 && color[1] == 0 && color[2] == 0)
		{
			SetEntityRenderMode(iClient, RENDER_TRANSCOLOR); 
			SetEntityRenderColor(iClient, 255, 255, 255, 255);
		}
		else 			
		{
			SetEntityRenderMode(iClient, RENDER_TRANSCOLOR); 
			SetEntityRenderColor(iClient, color[0], color[1], color[2], 255);
		}
		// SET ARMOR
		if (iArmor > 0)SetEntProp(iClient, Prop_Data, "m_ArmorValue", iArmor);
		
		new String:Name[255];
		KvGetString(hKv, "WEAPON", Name,255);
		if(Name[0]!=0) SetWeapon(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]==0) CS_SetClientClanTag(iClient," ");
		else CS_SetClientClanTag(iClient,ClanTag[iClient]);
	}
}
stock SetWeapon(iClient)
{
	// GET WEAPON
	new String:Name[255];
	KvGetString(hKv, "WEAPON", Name,255);
	iParts = ReplaceString(Name, sizeof(Name), ";", ";-");
	if(iParts>0)
	{
		decl String:sParts[iParts+1][4096], i;
		iParts = ExplodeString(Name, ";-", sParts, sizeof(sParts[]), sizeof(sParts[]));
		for(i = 0; i < iParts; ++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(iClient, 1); 
				if (slot != -1 && RemovePlayerItem(iClient, slot)) 
				{ 
					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(iClient, 0); 
				if (slot != -1 && RemovePlayerItem(iClient, slot)) 
				{ 
					AcceptEntityInput(slot, "Kill"); 
					Format(Weapon, sizeof(Weapon), "weapon_%s", sParts[i]);
					GivePlayerItem(iClient, Weapon);
				} 
			}
			if(StrEqual(sParts[i],"c4"))
			{
				new slot = GetPlayerWeaponSlot(iClient, 4); 
				if (slot != -1 && RemovePlayerItem(iClient, slot)) 
				{ 
					AcceptEntityInput(slot, "Kill"); 
				} 
			}
			if(StrEqual(sParts[i],"knife"))
			{
				new slot = GetPlayerWeaponSlot(iClient, 2); 
				if (slot != -1 && RemovePlayerItem(iClient, slot)) 
				{ 
					AcceptEntityInput(slot, "Kill"); 
				} 
			}
			Format(Weapon, sizeof(Weapon), "weapon_%s", sParts[i]);
			GivePlayerItem(iClient, Weapon);
		}
	}
	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(iClient, 1); 
			if (slot != -1 && RemovePlayerItem(iClient, slot)) 
			{ 
				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(iClient, 0); 
			if (slot != -1 && RemovePlayerItem(iClient, slot)) 
			{ 
				AcceptEntityInput(slot, "Kill"); 
				Format(Weapon, sizeof(Weapon), "weapon_%s", Name);
				GivePlayerItem(iClient, Weapon);
			} 
		}
		if(StrEqual(Name,"c4"))
		{
			new slot = GetPlayerWeaponSlot(iClient, 4); 
			if (slot != -1 && RemovePlayerItem(iClient, slot)) 
			{ 
				AcceptEntityInput(slot, "Kill"); 
			} 
		}
		if(StrEqual(Name,"knife"))
		{
			new slot = GetPlayerWeaponSlot(iClient, 2); 
			if (slot != -1 && RemovePlayerItem(iClient, slot)) 
			{ 
				AcceptEntityInput(slot, "Kill"); 
			} 
		}
		Format(Weapon, sizeof(Weapon), "weapon_%s", Name);
		GivePlayerItem(iClient, Weapon);
	}
}

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

Вложения

  • scripting.zip
    39.9 КБ · Просмотры: 4

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Что за баги?
5TvKOvV.jpg
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #8
Делай
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(hKv, g_sRank[iClient]))
	{
 
Сверху Снизу