Jump to content

Ik kwam op het idee..


Recommended Posts

Geplaatst:

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:

Geplaatst:
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: (bewerkt)

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:
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:

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?

Geplaatst: (bewerkt)
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...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...