Jump to content

SendClientMessage naar 1 van de 2 teams?


Recommended Posts

Geplaatst:

hey,

ik heb een DM scriptje gemaakt

ik heb een teamchat gemaakt met command tchat

maar aan het einde staat zo return SendClientMessage(TEAM_USA,COLOR_TEAM_CHAT,string);

en bovenaan mn script staat #define TEAM_USA 1 dus word bij de message alleen naar id 1 gestuurt niet naar heel het team.

de code:

dcmd_tchat(playerid, params[])
{
#pragma unused params
   if(gTeam[playerid] == TEAM_USA)
{
	if(!strlen(params)) return
	SendClientMessage(playerid, COLOR_WRONG, "Usage: /tchat [Text]");
       new string1[128];
	format(string1, sizeof(string1), "[uSA TEAM CHAT]%s: %s", GetName(playerid), params[0]);
	printf(string1,"[uSA TEAM CHAT]%s: %s", GetName(playerid), params[0]);
	return SendClientMessage(...,COLOR_TEAM_CHAT,string1);
   }
   else if(gTeam[playerid] == TEAM_SOMALIA)
{
       if(!strlen(params)) return
	SendClientMessage(playerid, COLOR_WRONG, "Usage: /tchat [Text]");
       new string[128];
    format(string, sizeof(string),"[sOMALIA TEAM CHAT]%s: %s", GetName(playerid), params[0]);
    printf(string,"[sOMALIA TEAM CHAT]%s: %s", GetName(playerid), params[0]);
    return SendClientMessage(...,COLOR_TEAM_CHAT,string);
   }
   return 1;
}

waar ... staat had ik TEAM_USA staan maar dat werkt dus niet is er nog een andere manier?

alvast bedankt!

~Shotyoudie

Geplaatst: (bewerkt)

Je moet 1 voor 1 afgaan wie er in dat team zit, Bijna iedereen gebruikt hier for voor.

Ik heb even een kleine functie voor geschreven. :puh:

stock SendTeamMessage(team,color,text[])for(new i;i<MAX_PLAYERS;i++)if(GetPlayerTeam(playerid) == team)SendClientMessage(i,color,text);

@Wanted: Was ik even vergeten, nu werkt het. : d

Bewerkt: door GTAguillaume
Geplaatst:

Je moet 1 voor 1 afgaan wie er in dat team zit, Bijna iedereen gebruikt hier for voor.

Ik heb even een kleine functie voor geschreven. :puh:

stock SendTeamMessage(color,test[])for(new i;i<MAX_PLAYERS;i++)SendClientMessage(i,color,text);

Deze functie is hetzelfde als SendClientMessageToAll. ;)

Gebruik in plaats van daarvan deze functie. :puh:

stock SendTeamMessage(Team, Color, Text[])
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
	if(IsPlayerConnected(i))
	{
		if(Team == JouwVarWaarinTeamWordtOpgeslagen[playerid]) // Verander 'JouwVarWaarinTeamWordtOpgeslagen' in je variable waar het team van een speler in wordt opgeslagen.
		{
			SendClientMessage(i, Color, Text);
		}
	}
}
}

Geplaatst: (bewerkt)

Je moet 1 voor 1 afgaan wie er in dat team zit, Bijna iedereen gebruikt hier for voor.

Ik heb even een kleine functie voor geschreven. :puh:

stock SendTeamMessage(color,test[])for(new i;i<MAX_PLAYERS;i++)SendClientMessage(i,color,text);

Deze functie is hetzelfde als SendClientMessageToAll. ;)

Gebruik in plaats van daarvan deze functie. :puh:

stock SendTeamMessage(Team, Color, Text[])
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
	if(IsPlayerConnected(i))
	{
		if(Team == JouwVarWaarinTeamWordtOpgeslagen[playerid]) // Verander 'JouwVarWaarinTeamWordtOpgeslagen' in je variable waar het team van een speler in wordt opgeslagen.
		{
			SendClientMessage(i, Color, Text);
		}
	}
}
}

Bedoel je met JouwVar TEAM_USA bv?

want volgens mij moet ik dit dan 2x doen?

Edit:als ik TEAM_USA doe krijg ik deze errors:

C:\Users\Rick\Desktop\UDM Server\gamemodes\UDM.pwn(48) : error 029: invalid expression, assumed zero
C:\Users\Rick\Desktop\UDM Server\gamemodes\UDM.pwn(48) : error 029: invalid expression, assumed zero
C:\Users\Rick\Desktop\UDM Server\gamemodes\UDM.pwn(48) : error 017: undefined symbol "playerid"
C:\Users\Rick\Desktop\UDM Server\gamemodes\UDM.pwn(48) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.

Bewerkt: door shotyoudie
Geplaatst: (bewerkt)

Sla jij ergens op (door middel van een variabele die je zelf hebt gemaakt) wie in welk team zit, of gebruik je SetPlayerTeam?

In het eerste geval, zeg eens hoe de variabele noemt,

in het laatste geval kan je mijn scriptje gebruiken.

Bewerkt: door GTAguillaume
Geplaatst:

Sla jij ergens op (door middel van een variabele die je zelf hebt gemaakt) wie in welk team zit, of gebruik je SetPlayerTeam?

In het eerste geval, zeg eens hoe de variabele noemt,

in het laatste geval kan je mijn scriptje gebruiken.

gTeam ?

static gTeam[MAX_PLAYERS];

public SetPlayerTeamFromClass(playerid,classid)
{
       if(classid == 0 || classid == 1 || classid == 2) {
               gTeam[playerid] = TEAM_USA;
       } else if(classid == 3 || classid == 4 || classid == 5) {
               gTeam[playerid] = TEAM_SOMALIA;
       }
}

en dit zijn teams

#define TEAM_USA 1 // Team USA

#define TEAM_SOMALIA 2 // Team Somalië

Geplaatst: (bewerkt)

stock SendTeamMessage(Team, Color, Text[])for(new i;i<MAX_PLAYERS; i++) if(IsPlayerConnected(i) && Team == gTeam[i])SendClientMessage(i, Color, Text);

(Ik hou van korte codes :puh:)

Usage (Voorbeeldje):

public OnPlayerSpawn(playerid)
{
    SendTeamMessage(gTeam[playerid],0xff0000AA,"Een speler van dit team is net gespawnt");
}

BTW:

static gTeam[MAX_PLAYERS];

Dat is eigelijk een grote fout van een SAMP voorbeeld; Een speler kan van team veranderen, en als hij uitlogt zal de volgende speler hetzelfde team krijgen, vervang dit door:

new gTeam[MAX_PLAYERS];

Bewerkt: door GTAguillaume
Geplaatst:

ik heb nu dit:

stock SendTeamMessage(Team, Color, Text[])for(new i;i<MAX_PLAYERS; i++) if(IsPlayerConnected(i) && Team == gTeam[i])SendClientMessage(i, Color, Text);

dcmd_tchat(playerid, params[])
{
#pragma unused params
   if(gTeam[playerid] == TEAM_USA)
{
	if(!strlen(params)) return
	SendClientMessage(playerid, COLOR_WRONG, "Usage: /tchat [Text]");
       new string1[128];
	format(string1, sizeof(string1), "[uSA TEAM CHAT]%s: %s", GetName(playerid), params[0]);
	printf(string1,"[uSA TEAM CHAT]%s: %s", GetName(playerid), params[0]);
	return SendTeamMessage(gTeam[playerid],COLOR_TEAM_CHAT,string1);
   }
   else if(gTeam[playerid] == TEAM_SOMALIA)
{
       if(!strlen(params)) return
	SendClientMessage(playerid, COLOR_WRONG, "Usage: /tchat [Text]");
       new string[128];
    format(string, sizeof(string),"[sOMALIA TEAM CHAT]%s: %s", GetName(playerid), params[0]);
    printf(string,"[sOMALIA TEAM CHAT]%s: %s", GetName(playerid), params[0]);
    return SendTeamMessage(gTeam[playerid],COLOR_TEAM_CHAT,string);
   }
   return 1;
}

nog 2 warnings:

C:\Users\Rick\Desktop\UDM Server\gamemodes\UDM.pwn(291) : warning 209: function "SendTeamMessage" should return a value

C:\Users\Rick\Desktop\UDM Server\gamemodes\UDM.pwn(300) : warning 209: function "SendTeamMessage" should return a value

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

2 Warnings.

291 is de eerste return SendTeamMessage(gTeam[playerid],COLOR_TEAM_CHAT,string1); en 300 de 2de

ingame werkt het alleen er komt bij te staan wrong command

Geplaatst: (bewerkt)

Ohh je hebt niet gezegt dat hij iets moest returnen, je kan nu oftewel:

return SendTeamMessage(gTeam[playerid],COLOR_TEAM_CHAT,string);

vervangen door:

SendTeamMessage(gTeam[playerid],COLOR_TEAM_CHAT,string);
return 1;

Of de code zelf veranderen:

stock SendTeamMessage(Team, Color, Text[])
{
for(new i;i<MAX_PLAYERS; i++) if(IsPlayerConnected(i) && Team == gTeam[i])SendClientMessage(i, Color, Text);
return 1;
}

Dan returnt hij een 1tje, en zal hij geen errors/warns geven, maar beiden komen op hetzelfde neer.

Bewerkt: door GTAguillaume
Geplaatst:

Ohh je hebt niet gezegt dat hij iets moest returnen, je kan nu oftewel:

return SendTeamMessage(gTeam[playerid],COLOR_TEAM_CHAT,string);

vervangen door:

SendTeamMessage(gTeam[playerid],COLOR_TEAM_CHAT,string);
return 1;

Of de code zelf veranderen:

stock SendTeamMessage(Team, Color, Text[])
{
for(new i;i<MAX_PLAYERS; i++) if(IsPlayerConnected(i) && Team == gTeam[i])SendClientMessage(i, Color, Text);
return 1;
}

Dan returnt hij een 1tje, en zal hij geen errors/warns geven, maar beiden komen op hetzelfde neer.

Thx het werkt nu :D

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