STIJNtj Geplaatst: 29 juli 2008 Rapport Geplaatst: 29 juli 2008 Dus.. 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! Reageren
Ophion Geplaatst: 30 juli 2008 Rapport Geplaatst: 30 juli 2008 Het zou kunnen. Sandra heeft al een 2e chat gemaakt. Reageren
STIJNtj Geplaatst: 30 juli 2008 Auteur Rapport Geplaatst: 30 juli 2008 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? Reageren
Hannovd Geplaatst: 1 augustus 2008 Rapport Geplaatst: 1 augustus 2008 (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: 1 augustus 2008 door Hannovd Reageren
Crusher!! Geplaatst: 1 augustus 2008 Rapport Geplaatst: 1 augustus 2008 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 Reageren
STIJNtj Geplaatst: 1 augustus 2008 Auteur Rapport Geplaatst: 1 augustus 2008 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? Reageren
Hannovd Geplaatst: 1 augustus 2008 Rapport Geplaatst: 1 augustus 2008 (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 ) 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: 1 augustus 2008 door Hannovd Reageren
Recommended Posts
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.