Hey,
ich hab immoment ein System, das wenn man 3x teamkill gemacht hat, wird man automatisch gekickt.
Aber ich finds besser wenn man kein teamkill machen kann, also wenn man auf einem im team schießt, verliert der keine hp
Teamkill
- JayTheSheep
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Mach bei OnPlayerSpawn &/oder bei OnPlayerRequestClass:
if(GetPlayerTeam(playerid) == DeineTeamID) {
SetPlayerTeam(playerid, DeineTeamID);
} -
Aber das bewirkt doch nicht das man kein Teamkill machen kann, oder?
Oder ist das automatisch von SA:MP her so? -
Doch, genau das bewirkt das... O:
Hört sich nicht so an ist aber so. Dachte früher auch, was sollte das bringen aber scheint zu klappen.EDIT: Aber macht das mit jedem Team, sonst geht das vielleicht nicht.
-
Super, danke
/E: geht irgendwie doch nicht
public OnPlayerSpawn(playerid)
{
if(gTeam[playerid] == TEAM_GROVE) {
SetPlayerColor(playerid,COLOR_GREEN);
return 1;
}
if(gTeam[playerid] == TEAM_COPS) {
SetPlayerColor(playerid,COLOR_BLUE);
return 1;
}
if(gTeam[playerid] == TEAM_BALLAS) {
SetPlayerColor(playerid,COLOR_PURPLE);
return 1;
}
if(gTeam[playerid] == TEAM_ZIVIS) {
SetPlayerColor(playerid,COLOR_WHITE);
return 1;
}
if(gTeam[playerid] == TEAM_MAFIA) {
SetPlayerColor(playerid,COLOR_OLIVE);
return 1;
}
if(gTeam[playerid] == TEAM_PARA) {
SetPlayerColor(playerid,COLOR_ORANGE);
return 1;
}
GivePlayerMoney(playerid,5000);
if(GetPlayerTeam(playerid) == TEAM_GROVE) {
SetPlayerTeam(playerid, TEAM_GROVE);
}
if(GetPlayerTeam(playerid) == TEAM_BALLAS) {
SetPlayerTeam(playerid, TEAM_BALLAS);
}
if(GetPlayerTeam(playerid) == TEAM_COPS) {
SetPlayerTeam(playerid, TEAM_COPS);
}
if(GetPlayerTeam(playerid) == TEAM_ZIVIS) {
SetPlayerTeam(playerid, TEAM_ZIVIS);
}
if(GetPlayerTeam(playerid) == TEAM_MAFIA) {
SetPlayerTeam(playerid, TEAM_MAFIA);
}
if(GetPlayerTeam(playerid) == TEAM_PARA) {
SetPlayerTeam(playerid, TEAM_PARA);
}
return 0;
} -
Dann versuch das mal so:
public OnPlayerSpawn(playerid)
{
if(gTeam[playerid] == TEAM_GROVE) {
SetPlayerColor(playerid,COLOR_GREEN);
SetPlayerTeam(playerid, TEAM_GROVE);
return 1;
}
if(gTeam[playerid] == TEAM_COPS) {
SetPlayerColor(playerid,COLOR_BLUE);
SetPlayerTeam(playerid, TEAM_BALLAS);
return 1;
}
if(gTeam[playerid] == TEAM_BALLAS) {
SetPlayerColor(playerid,COLOR_PURPLE);
SetPlayerTeam(playerid, TEAM_COPS);
return 1;
}
if(gTeam[playerid] == TEAM_ZIVIS) {
SetPlayerColor(playerid,COLOR_WHITE);
SetPlayerTeam(playerid, TEAM_ZIVIS);
return 1;
}
if(gTeam[playerid] == TEAM_MAFIA) {
SetPlayerColor(playerid,COLOR_OLIVE);
SetPlayerTeam(playerid, TEAM_MAFIA);
return 1;
}
if(gTeam[playerid] == TEAM_PARA) {
SetPlayerColor(playerid,COLOR_ORANGE);
SetPlayerTeam(playerid, TEAM_PARA);
return 1;
}
return 0;
}Und ich glaube die return 1; Dinger sind nicht nötig in dem Fall.
EDIT: Du hast bestimmt die Teams auch mit Zahlen definiert z.B. #define TEAM_GROVE 1 oder so, wenn das auch nicht klappen sollte, versuchs mit den Zahlen...
-
Mhm funktioniert noch immer nicht. Nicht wie du es geschrieben hast, auch nicht mit den Zahlen
public OnPlayerSpawn(playerid)
{
if(gTeam[playerid] == TEAM_GROVE) {
SetPlayerColor(playerid,COLOR_GREEN);
return 1;
}
if(gTeam[playerid] == TEAM_COPS) {
SetPlayerColor(playerid,COLOR_BLUE);
return 1;
}
if(gTeam[playerid] == TEAM_BALLAS) {
SetPlayerColor(playerid,COLOR_PURPLE);
return 1;
}
if(gTeam[playerid] == TEAM_ZIVIS) {
SetPlayerColor(playerid,COLOR_WHITE);
return 1;
}
if(gTeam[playerid] == TEAM_MAFIA) {
SetPlayerColor(playerid,COLOR_OLIVE);
return 1;
}
if(gTeam[playerid] == TEAM_PARA) {
SetPlayerColor(playerid,COLOR_ORANGE);
return 1;
}
GivePlayerMoney(playerid,5000);
if(GetPlayerTeam(playerid) == 1) {
SetPlayerTeam(playerid, 1);
}
if(GetPlayerTeam(playerid) == 2) {
SetPlayerTeam(playerid, 2);
}
if(GetPlayerTeam(playerid) == 0) {
SetPlayerTeam(playerid, 0);
}
if(GetPlayerTeam(playerid) == 4) {
SetPlayerTeam(playerid, 4);
}
if(GetPlayerTeam(playerid) == 3) {
SetPlayerTeam(playerid, 3);
}
if(GetPlayerTeam(playerid) == 5) {
SetPlayerTeam(playerid, 5);
}
return 0;
} -
Das ganze kann man auch mit Switch/Case optimierter lösen...
switch(...)
{
case 1: // Team 1
{
// Aktionen
}
case 2: // Team 2...
{
// Aktionen...
}
}Zum anderen solltest du lernen was Makros sind & was der Präprozessor damit macht bzw. wie er dies verwendet....
#define TEAM_TEST 1 // Bezeichner der die Zahl enthält zudem ist er Konstant & eine Direkte Variable die Später ersetzt wird gegen die Zahl 1 sprich beim verarbeiten / kompilieren.
-
Versteh ich nicht
Wo muss das switch hin und welche Befehle müsste ich einsetzen? Und die Zahlen hinter dem case sind doch die definierten Zahlen für das jeweilige Team einfach ausgedrückt, oder? -
breadfish.de
Hat das Thema geschlossen.