Jump to content
Geplaatst:
comment_1058615

Dus.. :puh:

Ik kwam op het idee om een soort van 'nieuw' chatsysteem te maken..

Als je (if) de cmd '/nl' typt, dan komt die in een chatsysteem waar alleen mensen die ook /nl hebben gedaan, als je dan /nl [text] doet dan komt je text in die chat (en dus voor aleen Dutch mensen).

Als je (if) de cmd '/en' typt, dan komt die in een chatsysteem waar alleen mensen die ook /en hebben gedaan, als je dan /en [text] doet dan komt je text in die chat (en dus voor aleen Engelse mensen).

en als je dan weer '/gl' doet dan heb je weer de normale (global) chat..

Zou dit mogelijk zijn om te maken of niet, ik zou anders geen idee hebben hoe..

Als iemand dit (al) gemaakt heeft post hier plz! :eten:

Featured Replies

Geplaatst:
  • Auteur
comment_1058713
Het zou kunnen. Sandra heeft al een 2e chat gemaakt.

misschien kan sandra op basis van die 2e chat daarvan maken dat het een chat is voor alleen de gekozen taal?

Geplaatst:
comment_1061105

Heel best mogelijk..

de geselecteerde taal checken voor elke speler via een for.next-lus, elke binnenkomend bericht (dus geen /nl of /en)

De verzender van het bericht even de taal van checken en dan het bericht versturen naar degende die bijv. NL hebben geselecteerd. dmv. SendClientMessage(i, COLOR_WHITE, text);

new Language[MAX_PLAYERS];

dan heb je dus in de Language array 1 veld, een met de playerid, deze gaat straks een waarde van 0 of 1 vasthouden..

0 = English

1 = Nederlands

Plaats het volgende onder OnPlayerText(playerid, text[])

for(new i = 0; i < MAX_PLAYERS; i++)
 {
	  if( Language[playerid] == Language[i])
									 {
											   new pname[32], string[265];											   GetPlayerName(playerid,pname,sizeof(pname));
	   format(string, sizeof(string), "<< %s: %s", pname, text);
							   SendClientMessage(i, COLOR_WHITE, string);
										}
	  else
										 {   
			return 0;
										 }

 }

En hierna kun je natuurlijk nog een /all cmd maken die je bericht naar iedereen verstuurt..

Nu moet je alleen nog even de spelers hen taal laten definiëren, en even bij connect de default taal zetten dmv.

public OnPlayerConnect(playerid)
{
 Language[playerid] = 0; //English as default
}

Ik hoef hier niet te vertellen hoe je een simpel cmd'tje maakt, en daarin zet je hetzelfde als hierboven:

Language[playerid] = 0; //English
/*Language[playerid] = 1; //Nederlands */

Bewerkt: door Hannovd

Geplaatst:
comment_1061192
Heel best mogelijk..

de geselecteerde taal checken voor elke speler via een for.next-lus, elke binnenkomend bericht (dus geen /nl of /en)

De verzender van het bericht even de taal van checken en dan het bericht versturen naar degende die bijv. NL hebben geselecteerd. dmv. SendClientMessage(i, COLOR_WHITE, text);

new Language[MAX_PLAYERS];

dan heb je dus in de Language array 1 veld, een met de playerid, deze gaat straks een waarde van 0 of 1 vasthouden..

0 = English

1 = Nederlands

public OnPlayerText(playerid, text[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
 {
	  if( Language[playerid] == Language[i])
		   SendClientMessage(i, COLOR_WHITE, text);
	  else
			return 0;
 }
}
// En OnPlayerText moet op het einde nog even iets returnen (1; bijv.)

En hierna kun je natuurlijk nog een /all cmd maken die je bericht naar iedereen verstuurt..

Nu moet je alleen nog even de spelers hen taal laten definiëren, en even bij connect de default taal zetten dmv.

public OnPlayerConnect(playerid)
{
 Language[playerid] = 0; //English as default
}

Ik hoef hier niet te vertellen hoe je een simpel cmd'tje maakt, en daarin zet je hetzelfde als hierboven:

Language[playerid] = 0; //English
/*Language[playerid] = 1; //Nederlands */

ik heb hem ook in mijn script gezet en hij doet het mooi

Geplaatst:
comment_1061582
ik snap er niét echt veel van, kan je precies zeggen wat ik in script moet zetten voor die 3 talen te hebben, nl, english en default voor iedereen?

Met het systeem wat ik hier heb geplaats is het in principe mogelijk om 1000'en talen te doen..

Je zorgt gewoon dat je bepaalde talen een id geeft.,

In mijn voorbeeld gaf ik engels de id 0, en nederlands was id 1.

Zou je nog frans o.i.d. erbij willen zetten geef je die id 2 enz.

via een cmd (bijv. /dutch) geef je de server aan dat je alleen berichten over het nederlands kanaal wilt ontvangen (oftewel id 1)

Wat hierboven staat kun heel simpel in elk script integeren.

new Language[MAX_PLAYERS];

dat stukje code kun je helemaal bovenaan je script plakken, bijv. onder

#include <a_samp>

Het stukje wat begint met OnPlayerText plaats je in de al bestaande OnPlayerText callback (in elk script te vinden :D )

Ik raad aan om het gewoon helemaal bovenaan te plakken..

Als je het in een script zet wat al een hoop zooi in OnPlayerText heeft staan is dit voldoende:

for(new i = 0; i < MAX_PLAYERS; i++)
 {
	  if( Language[playerid] == Language[i])
									 {
											   new pname[32], string[265];											   GetPlayerName(playerid,pname,sizeof(pname));
	   format(string, sizeof(string), "<< %s: %s", pname, text);
							   SendClientMessage(i, COLOR_WHITE, string);
										}
	  else
										 {   
			return 0;
										 }

 }

---------

Verder kun je via een commando in OnPlayerCommandText iets als dit plaatsen:

if (strcmp(cmdtext, "/language", true) == 0)
{
	tmp = strtok(cmdtext, idx);
	if (!strlen(tmp))
	{
			SendClientMessage(playerid, COLOR_WHITE, "Correct Usage: /language <language>");
			SendClientMessage(playerid, COLOR_WHITE, "typ /languages for all available channels");
		return 1;
	}
	new language[32];
	format(language, sizeof(language), tmp);
	if (strcmp(language, "English") == 0)
		Language[playerid] = 0;
	else
		if (strcmp(language, "Nederlands") == 0)
			Language[playerid] = 1;
		else
			if (strcmp(language, "Deutsch") == 0)
				Language[playerid] = 2;
		else
return SendClientMessage(playerid, COLOR_WHITE, "|: Error - Invalid Language.");
SendClientMessage(playerid, COLOR_WHITE, "|: Language succesfully changed");

Script even wat aangepast zodat ie ook de namen erbij geeft

Oh.. en niet vergeten, OnPlayerText moet op het einde 0 returnen'

 return 0;

Anders krijg je dubbele berichten..!

Bewerkt: door Hannovd

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.