Jump to content

script Jednoduché označovanie hráčov v chate pomocou ID (@ID)


Kubko

Recommended Posts

Jednoduché označovanie hráčov v chate pomocou ID (@ID)


Na začiatok chcem upozorniť, že tento script už pred nejakou dobou nakódoval Tango, lenže to fungovalo 99% ľuďom a nedarilo sa nájsť chybu, prečo to niekedy blbne. Rozhodol som sa, že celý skript prekódujem. Všetky nápady patria Tangovi!
 
K čomu tento skript slúži? Ako už z nadpisu vyplýva, bude to nejaké označenie hráča pomocou jeho ID v chate. Funguje to na veľmi jednoduchom princípe. Keď píšete do chatu a chcete nejakého hráča označiť, musíte napísať zavináč (@) a jeho ID. V chate sa to nahradí menom hráča.
 
Príklad:
Na serveri je pripojený hráč s menom Sanios a má ID 11. Keď napíšete do chatu:
Ahoj, ja sa volám @11.
Správa sa odošle a spracuje sa na:
Ahoj, ja sa volám Sanios.
No nie je to jednoduché? Samozrejme, že môžete označiť viac hráčov v jednej správe, ale pozor, maximálna dĺžka správy, ktorá sa môže odoslať do chatu nesmie presiahnuť 128 znakov! Pokiaľ by nastal takýto problém, kód je proti tomu zabezpečený a upozorní vás do chatu.
 
Kód:


#if !defined strcpy
#define strcpy(%0,%1) \
	strcat((%0[0] = '\0', %0), %1)
#endif

#define MAX_LINE_LENGTH 128

public OnPlayerText(playerid, text[])
{
	new
		string[MAX_LINE_LENGTH + 1],
		name[MAX_PLAYER_NAME],
		buffer[4],
		targetid,
		i;
		
	strcpy(string, text);
	while(i < MAX_LINE_LENGTH)
	{
		if(string[i] == 64)
		{
			if(string[i + 1] > 47 && string[i + 1] < 58)
			{
				new j = i + 1;
				while(string[j] > 47 && string[j] < 58) j++;
				strmid(buffer, string, i + 1, j);
				targetid = strval(buffer);
				if(IsPlayerConnected(targetid))
				{
					strdel(string, i, j);
					GetPlayerName(targetid, name, sizeof(name));
					if(strlen(string) + strlen(name) > MAX_LINE_LENGTH)
					{
						SendClientMessage(playerid, -1, "Nemôžeš odoslať riadok dlhší ako 128 znakov!");
						return 0;
					}
					strins(string, name, i);
				}
				else
				{
					SendClientMessage(playerid, -1, "Hráč, ktorého si označil nie je pripojený na serveri!");
					return 0;
				}
			}
		}
		i++;
	}
	SendPlayerMessageToAll(playerid, string);
	return 0;
} 


 

Ak máte nejaký nápad, čo by som mohol pridať, zlepšiť, tak mi napíšte.

A na koniec si môžete pozrieť nejaké ukážky:

1. 
ID 10 = "Sanios",
ID 0 = "Tango"
 
ywWt4IN.png
 
2.
ID 1 = "Carl",
ID 2 = "Sweet",
ID 3 = "Ryder"

jaemECY.png

Edited by Sanios
Link to comment
Share on other sites

Skús sa posunúť napr na 126 znak a napíš @0 a celé to zblbne (text sa nenahradí) lebo nastane overflow > 128 znakov.

Edited by Sanios
Link to comment
Share on other sites

  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...