Shotyoudie Geplaatst: 11 februari 2010 Rapport Geplaatst: 11 februari 2010 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 Reageren
GTAguillaume Geplaatst: 11 februari 2010 Rapport Geplaatst: 11 februari 2010 (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. 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: 11 februari 2010 door GTAguillaume Reageren
Wanted Geplaatst: 11 februari 2010 Rapport Geplaatst: 11 februari 2010 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. 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. 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); } } } } Reageren
Shotyoudie Geplaatst: 12 februari 2010 Auteur Rapport Geplaatst: 12 februari 2010 (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. 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. 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: 12 februari 2010 door shotyoudie Reageren
GTAguillaume Geplaatst: 12 februari 2010 Rapport Geplaatst: 12 februari 2010 (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: 12 februari 2010 door GTAguillaume Reageren
Shotyoudie Geplaatst: 12 februari 2010 Auteur Rapport Geplaatst: 12 februari 2010 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ë Reageren
GTAguillaume Geplaatst: 12 februari 2010 Rapport Geplaatst: 12 februari 2010 (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 ) 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: 12 februari 2010 door GTAguillaume Reageren
Shotyoudie Geplaatst: 12 februari 2010 Auteur Rapport Geplaatst: 12 februari 2010 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 Reageren
GTAguillaume Geplaatst: 12 februari 2010 Rapport Geplaatst: 12 februari 2010 (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: 12 februari 2010 door GTAguillaume Reageren
Shotyoudie Geplaatst: 12 februari 2010 Auteur Rapport Geplaatst: 12 februari 2010 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 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.