/Invite umbauen

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
  • Jo Hey leute, wollte meinen Invite befehl etwas optimieren und zwar geht es darum, dass ich gerne möchte wenn ich Leader 1(Cop) bin meine member auch ins Team 1 kommen.
    Genau so wie bei FBI Leader und Armi leader! Das hat den Vorteil weil ich später mal eine Staatschat für Team 1 Mitglieder machen möchte :)


    So sieht er momentan aus :)


    ocmd:einladen(playerid, params[])
    {
    new pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,normal,"Verwendung: /Einladen [ID]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,normal,"Dieser Spieler ist nicht online!");
    if(pID == playerid) return SendClientMessage(playerid,normal,"Du kannst dich nicht selbst Einladen!");
    if(SpielerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid,normal,"Du bist kein Leader!");
    if(SpielerInfo[pID][pMember] > 0 || SpielerInfo[pID][pLeader] > 0) return SendClientMessage(playerid,normal,"Dieser Spieler ist bereits in einer Fraktion!");
    new str[128], name[24], pname[24];
    GetPlayerName(pID, name, 24);
    GetPlayerName(playerid, pname, 24);
    format(str, 128,"Du wurdest von %s eingeladen, herzlich Wilkommen!",pname);
    SendClientMessage(pID,hinweis1,str);
    format(str, 128,"Du hast %s eingeladen!",name);
    SendClientMessage(playerid,hinweis1,str);
    SpielerInfo[pID][pMember] = SpielerInfo[playerid][pLeader];
    //SpielerInfo[pID][pTeam] = SpielerInfo[playerid][pLeader];
    SpielerInfo[pID][pRank] = 1;
    return 1;
    }


    Wenn ich das so machen würde
    SpielerInfo[pID][pTeam] = SpielerInfo[playerid][pLeader];


    Würde es nicht gehen, da army dann später mal die ID 8 oder 9 haben wird :/
    kleiner Denkstoß würde reichen :)



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Mach doch einen stock und frag dort ab ob jemand in der Fraktion ist für den chat ich gebe dir mal ein Beispiel:



    stock isPlayerInStaatsFraktion(playerid)
    {
    new leader = PlayerInfo[playerid][pLeader], member = PlayerInfo[playerid][pMember];


    if(leader == 1 || member == 1)return 1;
    return 0;
    }


    stock SendStaatsMessage(text[])
    {
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
    if(!isPlayerInStaatsFraktion(i))continue;
    SendClientMessage(i,0xFFFFFFFF,text);
    }
    return 1;
    }

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • Eins vorweg: Ehrlich gesagt habe ich deine Frage nicht wirklich ganz verstanden, deswegen korrigiere mich bitte, falls ich unsinnige Lösungen hier poste.


    Ein paar Fragen:


    1. pLeader ist die Fraktions-Id.. So wie ich es dem Script entnehmen kann. Was hat es dann mit pTeam auf sich? Ist es die ID, ob der Spieler ein Beamter oder ein Gangmitglied ist?
    2. Was hat das mit der Army eig. nun zu tun? Angenommen.. Ich als LSPD Leader (ID 1) lade dich ein... Dann hast du ja auch die ID 1 als Fraktion. Die ID 8/9 (Army) hat ja im Endeffekt dann nichts mehr damit zu tun, ausser wenn ich auch Army Leader wäre und dich dann einladen würde.

  • ocmd:invite(playerid, params[])
    {
    if(Spieler[playerid][Leader] < 1 || Spieler[playerid][Rank] == 5)return SendClientMessage(playerid, COLOR_WEISS, "Du bist kein Leader von irgendeiner Fraktion/Gang/Mafia.");
    new pID, string[128];
    if(IsPlayerInAnyVehicle(pID))return SendClientMessage(playerid, COLOR_GRAD2, "Spieler darf nicht in einem Fahrzeug sitzen.");
    if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /invite [SpielerID/Name]");
    if(!IsPlayerConnected(pID))return 1;
    new ldtext[46];
    new frakid = Spieler[playerid][Team];
    if(frakid == 1){ ldtext ="LSPD";}
    else if(frakid==2){ldtext="FBI";}
    else if(frakid==3){ldtext="Sanitäter";}
    else if(frakid==4){ldtext="Hitman";}
    else if(frakid==5){ldtext="News Reporter";}
    else if(frakid==6){ldtext="Transport GmbH";}
    else if(frakid==7){ldtext="Ordnungsamt";}
    else if(frakid==8){ldtext="Russenmafia";}
    else if(frakid==9){ldtext="Yakuza";}
    else if(frakid==10){ldtext="Ballas";}
    else if(frakid==11){ldtext="Grove Street";}
    else if(frakid==12){ldtext="Cali Kartell";}
    else if(frakid==13){ldtext="Regierung";}
    else if(frakid==14){ldtext="SFPD";}
    if(Spieler[pID][Team] > 0)return SendClientMessage(playerid, COLOR_GRAD2, "Der Spieler ist bereits in einer Fraktion.");
    format(string, sizeof(string), "{FFFFFF}Du wurdest von Co/Leader %s als %s-Mitglied eingeladen.\nDrücke auf "Annehmen" oder auf "Ablehnen" um deine Stimmung abzugeben.", SpielerName(playerid), ldtext);
    ShowPlayerDialog(pID, DIALOG_INVITE, DIALOG_STYLE_MSGBOX, "Einladung als Mitglied",string, "Annehmen", "Ablehnen");
    InviteFrak[pID] = frakid;
    format(string, sizeof(string), "Du hast %s als %s-Mitglied eingeladen.", SpielerName(pID), ldtext);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }


    :thumbup:

  • ist doch eig ganz einfach


    du machst beim annehmen des invites bzw einladen eine If Abfrage ob der Einlader in der Staatsfraktion ist.


    Diese übergibst du an den den du einladen willst und machst dort eine erneute IF Abfrage


    so übevrprüfst du ob er berechtigt ist ein staatsmember zu werden


    Wenn ja setze die Variable des Teams auf die ID des Teams



    LG :D