/f Chat für Teams

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
  • Hallo Community,
    ich benötige einen Script (ocmd) also einen /f Script das nur die Teams untereinander reden können,
    bzw ein Team Chat. Nur leider weiss ich nicht wie das geht brauche dringend Hilfe. Und ich weiss auch nicht
    wie ich die Teams mache bzw wie ich das definiere.


    mfG,
    Ien_Levin

    :) SWAGETTI & YOLONAISE!

  • hier ist der f chat aus meinem script.. musste nur anpassen an deine vars usw..
    ocmd:f(playerid,params[])
    {
    if(infrak(playerid,0))return keinefrak(playerid);
    if(sscanf(params,"s",stringbert2))return info(playerid,"/f [Text]");
    if(si[playerid][Gemuted]==1)return istgemuted(playerid);
    format(stringbert,sizeof(stringbert),"((( FChat: {FF9900}%s{FFFFFF}: %s )))",sname(playerid),stringbert2);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(si[playerid][Fraktion]!=si[i][Fraktion])continue;
    SendClientMessage(i,WEISS,stringbert);
    }
    return 1;
    }

  • wenn du noch überhaupt keine teams hast warum willst du dann ein /f chat?
    fang doch erstmal mit den teams an...
    hast du denn wenigstens schon ein login / register system wo die accounts gespeichert werden?

  • Ich habe ein Selfmade Script, ich habe Teams hier:

    public OnPlayerRequestClass(playerid, classid)
    {
    if(classid == 0 || classid == 1 || classid == 2)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    GameTextForPlayer(playerid,"~p~Ballas", 3000, 6);
    SetPlayerColor(playerid,PINK);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    SetPlayerMarkerForPlayer( 42, 1, 0xFF0000FF );
    SetPVarInt(playerid,"SkinWahl",1);
    }
    if(classid == 3 || classid == 4 || classid == 5)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    GameTextForPlayer(playerid,"~g~Grove Street Family", 3000, 6);
    SetPlayerColor(playerid,GRUEN);
    SetPVarInt(playerid,"SkinWahl",1);
    }
    if(classid == 6 || classid == 7 || classid == 8)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    GameTextForPlayer(playerid,"~y~Los Santos Vagos", 3000, 6);
    SetPlayerColor(playerid,GELB);
    SetPVarInt(playerid,"SkinWahl",1);
    }
    if(classid == 9 || classid == 10 || classid == 11)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    GameTextForPlayer(playerid,"~l~Die Russische Mafia", 3000, 6);
    SetPlayerColor(playerid,GRAU);
    SetPVarInt(playerid,"SkinWahl",1);
    }
    if(classid == 12 || classid == 13 || classid == 14)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    GameTextForPlayer(playerid,"~b~Varios Los Aztecas", 3000, 6);
    SetPlayerColor(playerid,HELLBLAU);
    SetPVarInt(playerid,"SkinWahl",1);
    }
    return 1;
    }


    Nur ich weiß nicht, wie ich das mit den Teams machen soll.

    :) SWAGETTI & YOLONAISE!

  • Kleines leichteres beispiel vill weiste es dann..


    ocmd:f(playerid,params[])
    {
    new text[300],string[100];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,BLAU,"/f [Text]");
    new rangname[64];
    if(GetPVarInt(playerid,"Fraktion") ==1) // team 1
    {
    switch(GetPVarInt(playerid,"Rang")) // team 1 rangnamen
    {
    case 0:(rangname="Rangname");
    case 1:(rangname="Rangname");
    case 2:(rangname="Rangname");
    case 3:(rangname="Rangname");
    }


    }
    if(GetPVarInt(playerid,"Fraktion") ==2) // team 2
    {
    switch(GetPVarInt(playerid,"Rang")) // team2 rangnamen
    {
    case 0:(rangname="Rangname");
    case 1:(rangname="Rangname");
    case 2:(rangname="Rangname");
    case 3:(rangname="Rangname");
    }


    }
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IstSpielerInFraktion(i,GetPVarInt(playerid,"Fraktion")))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"%s %s: %s",rangname,name,text);
    SendClientMessage(i,BLAU,string);
    }
    }
    }
    return 1;
    }

  • ich bin mir nicht sicher da ich mit classid noch nie gerabeitet habe.. vlcht gibt es eine möglichkeit die classid auszulesen aber davon weiß ich nichts.
    du könntest einen array oder pvar nutzen um die classid einzuspeichern und bei /f wieder abfragen.



    new klasse[MAX_PLAYERS];


    public OnPlayerRequestClass(playerid, classid)
    {
    klasse[playerid]=classid;
    return 1;
    }


    ocmd:f(playerid,params[])
    {
    if(sscanf(params,"s",stringbert2))return info(playerid,"/f [Text]");
    format(stringbert,sizeof(stringbert),"((( FChat: {FF9900}%s{FFFFFF}: %s )))",sname(playerid),stringbert2);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(klasse[playerid]!=klasse[i])continue;
    SendClientMessage(i,WEISS,stringbert);
    }
    return 1;
    }


    edit: bitte verbessern falls es eine besser möglichkeit gibt..
    zudem würde ich dir raten mit switch/case zu arbeiten da es weniger zeilen und weniger auslastung hat als eine if/esle abfrage ..


  • Muss man den nicht danach else it machen?

  • Bekomme diese Errors:

    C:\Dokumente und Einstellungen\Bärtle\Desktop\German Deathmatch\gamemodes\Deathmatch.pwn(3190) : error 017: undefined symbol "stringbert2"
    C:\Dokumente und Einstellungen\Bärtle\Desktop\German Deathmatch\gamemodes\Deathmatch.pwn(3190) : error 017: undefined symbol "info"
    C:\Dokumente und Einstellungen\Bärtle\Desktop\German Deathmatch\gamemodes\Deathmatch.pwn(3191) : error 017: undefined symbol "stringbert"
    C:\Dokumente und Einstellungen\Bärtle\Desktop\German Deathmatch\gamemodes\Deathmatch.pwn(3191) : error 017: undefined symbol "stringbert"
    C:\Dokumente und Einstellungen\Bärtle\Desktop\German Deathmatch\gamemodes\Deathmatch.pwn(3191) : error 029: invalid expression, assumed zero
    C:\Dokumente und Einstellungen\Bärtle\Desktop\German Deathmatch\gamemodes\Deathmatch.pwn(3191) : fatal error 107: too many error messages on one line


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



    6 Errors.

    :) SWAGETTI & YOLONAISE!

  • ajo hab ja gemeint musste anpassen ^^
    stringbert und stringbert2 sind bei mir globale strings die ich für alles verwende..
    new stringbert[128],stringbert2[128];
    und für sname(playerid) deinen eigenen stock einfügen um den spielernamen auszulesen oder wenn du keine funktion dafür hast mit GetPlayerName auslesen.
    und info mit SendClientMessage austauschen..

  • Alsoo alles funktioniert zwar jedoch kann nur der mein /f CHat nehmen der den gleichen Skin wie ich hat.
    D.h wenn einer Big SMoke hat und der andere einen anderen können die kein /f Chat ablesene. Nur wer die gleichen
    Skins hat kann /f CHat ablesen brauch da nochmals Hilfe.

    :) SWAGETTI & YOLONAISE!

  • ajo dann musste halt aussuchen welche skins im team 1 sind und welche in team 2 sind usw...

    public OnPlayerRequestClass(playerid, classid)
    {
    switch(classid)
    {
    case 1,5,10:klasse[playerid]=1; //skin id 1,5 und 10 sind klasse 1
    case 20..200:klasse[playerid]=2; // skin id 20 bis 200 sind klasse 2
    }
    return 1;
    }

  • Okay hab das jetzt eingefügt hier:

    public OnPlayerRequestClass(playerid, classid)
    {
    switch(classid)
    {
    case 0,1,2:klasse[playerid]=1; //Ballas
    case 3,4,5:klasse[playerid]=2; //GSF
    case 6,7,8:klasse[playerid]=3; // LSV
    case 9,10,11:klasse[playerid]=4; //Russische Mafia
    case 12,13,14:klasse[playerid]=5; //Aztecas
    }


    if(classid == 0 || classid == 1 || classid == 2)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    GameTextForPlayer(playerid,"~p~Ballas", 3000, 6);
    SetPlayerColor(playerid,PINK);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    SetPlayerMarkerForPlayer( 42, 1, 0xFF0000FF );
    SetPVarInt(playerid,"SkinWahl",1);
    }
    if(classid == 3 || classid == 4 || classid == 5)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    GameTextForPlayer(playerid,"~g~Grove Street Family", 3000, 6);
    SetPlayerColor(playerid,GRUEN);
    SetPVarInt(playerid,"SkinWahl",1);
    }
    if(classid == 6 || classid == 7 || classid == 8)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    GameTextForPlayer(playerid,"~y~Los Santos Vagos", 3000, 6);
    SetPlayerColor(playerid,GELB);
    SetPVarInt(playerid,"SkinWahl",1);
    }
    if(classid == 9 || classid == 10 || classid == 11)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    GameTextForPlayer(playerid,"~l~Die Russische Mafia", 3000, 6);
    SetPlayerColor(playerid,GRAU);
    SetPVarInt(playerid,"SkinWahl",1);
    }
    if(classid == 12 || classid == 13 || classid == 14)
    {
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
    GameTextForPlayer(playerid,"~b~Varios Los Aztecas", 3000, 6);
    SetPlayerColor(playerid,HELLBLAU);
    SetPVarInt(playerid,"SkinWahl",1);
    }
    return 1;
    }


    Nur ich weiss nicht wie ich das in ocmd:f einfügen soll:

    ocmd:f(playerid,params[])
    {
    if(sscanf(params,"s",stringbert2))return SendClientMessage(playerid,HELLROT,"AmdCmd: Benutze /f [Text]");
    format(stringbert,sizeof(stringbert),"(( Team Chat: {CCB596}%s{FFFFFF}: %s ))",SpielerName(playerid),stringbert2);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(klasse[playerid]!=klasse[i])continue;
    SendClientMessage(i,WEISS,stringbert);
    }
    return 1;
    }

    :) SWAGETTI & YOLONAISE!

  • joa sieht doch schonmal ganz gut aus. du speicherst ja welche skins in einem team sind hier:
    switch(classid)
    {
    case 0,1,2:klasse[playerid]=1; //Ballas
    case 3,4,5:klasse[playerid]=2; //GSF
    case 6,7,8:klasse[playerid]=3; // LSV
    case 9,10,11:klasse[playerid]=4; //Russische Mafia
    case 12,13,14:klasse[playerid]=5; //Aztecas
    }
    und dann frägst du unter /f ab ob die person im gleichen team ist hier:
    if(klasse[playerid]!=klasse[i])continue; //bedeutet so viel wie falls i nicht im gleichen team ist wie playerid wird i übersprungen und es geht zum nächsten spieler weiter


    was klappt denn nicht?