Beiträge von MrTadäus

    Hey. Ich wollte mir ein dynamisches Fraktions system basteln, wo ich dann ingame /createfraktion [Fraktionsname] o.ä. eingebe und dann eine "Fraktionsid".txt erstellt wird.
    Also hab ich mir gedacht fange ich mal so an:


    Code
    #define MAX_FRAK 3


    Ich habe mir gedacht, da ich ja eine for schleife machen muss, damit keine Fraktionsid überschrieben wird, setze ich erstmal klein an, damit die for schleife nicht erstmal bis 100 hochzählen muss. Kann man ja nachher noch ändern, wenn man mehrere Fraktionen haben möchte.



    Hier bin ich mir schon unsicher, ob das [64] rein muss, weil ich habe nirgends ein System gefunden, das einen Namen in einer Datei speichert.
    Naja weiter.



    Code
    ocmd:createfraktion(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,0))
    {
    CreateFraction();
        return 1;
    }
    return 1;
    }


    Das PlayerAdmin(0) ist so gewollt, da ich noch probleme mit dem speichern nach dem /gmx habe. So wie bekomme ich jetzt hin, dass der Name in der Datei gespeichert wird?
    Klar mit

    Code
    if(sscanf(params,"s",FName))  return SendClientMessage(playerid,COLOR_WHITE,"Benutze: /createfraktion  [Fraktionsname]");


    aber wie schaffe ich es jetzt den String FName in der Datei zu speichern. Für die Räne gibt es dann einen Extra befehl
    Wäre nett wenn mir jemand helfen könnte.
    Ich hoffe, dass ich mein Problem ausführlich und verständlich genug beschrieben habe.


    MFG InsaneDucky


    //EDIT: Codes und Probleme aktuallisiert


    //EDIT 2:
    Okay, ich hab es glaub ich fast selbst geschafft aber habe jetzt ein neues Problem:



    Error:

    Code
    error 023: array assignment must be simple assignment


    Ist die zeile

    Code
    Fraktion_Info[frak] -= Betrag;

    @ iAIR
    Wäre es sicht sinnvoller das beo OnplayerText zu machen? Bin nicht so erfahren, aber bei OnPlayerConnect hat das doch wenig Sinn, ausser, dass er erfährt, dass er gemuted ist?

    Danke =)

    Zitat

    Und wie kann ich machen dass der skin nach dem drücken von "Spawn" bei einer SKinauswahl gesaved wird?

    Wenn mir jetzt noch jemand bei dem Problem helfen könnte wäre das super

    Wenn ich dann aber das mache:

    public OnGameModeExit()
    {
    new name[128], save[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(save,sizeof(save),"/Spieler/%s.ini",name);
    if(dini_Exists(save))
    {
    dini_IntSet(save,"skin",GetPlayerSkin(playerid));
    //dini_IntSet(save,"skin",pInfo[playerid][skin]);
    dini_IntSet(save,"geld",GetPlayerMoney(playerid));
    dini_IntSet(save,"team",pInfo[playerid][team]);
    dini_IntSet(save,"leader",pInfo[playerid][leader]);
    dini_IntSet(save,"alvl",pInfo[playerid][alvl]);
    }
    return 1;
    }

    bekomme ich folgende Errors

    error 017: undefined symbol "playerid"
    error 017: undefined symbol "playerid"
    error 017: undefined symbol "playerid"
    error 017: undefined symbol "playerid"
    error 017: undefined symbol "playerid"
    error 017: undefined symbol "playerid"

    Also wie die Überschrift schon sagt bekomm ich nach nem gmx immer die skin ID 0. Bei nem Logout saved er den Skin. Und wie kann ich machen dass der skin nach dem drücken von "Spawn" bei einer SKinauswahl gesaved wird?


    Hier erstmal der GMX-Befehl:

    dcmd_gmx(playerid,params[])
    {
    if(loggedin[playerid] == false)
    {
    SendClientMessage(playerid,COLOR_RED,"Du musst dich erst einloggen.");
    return 0;
    }
    if(pInfo[playerid][alvl] >=3)
    {
    #pragma unused params
    SendClientMessageToAll(COLOR_RED,"Ein Admin hat einen Server-Restart durchgeführt!");
    SendRconCommand("gmx");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast nicht die nötigen Rechte.");
    }
    return 1;
    }

    Also so?
    Onplayerconnect
    SetPlayerColor(playerid,0xFFFFFF00); // unsichtbar (weiß)
    Da ja jeder mit einer Farbe z.B. Orange,Lila spawnt
    und dann beim /aduty


    dcmd_aduty(playerid,params[] )
    {
    #pragma unused params
    if(aduty[playerid] == 0)
    {
    new Name[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(playerid,Name,sizeof(Name));
    format(string,sizeof(string),"Admin %s befindet sich nun im Adminduty!",Name);
    SendClientMessageToAll(GELB,string);
    SetPlayerHealth(playerid, 10000);
    SetPlayerArmour(playerid, 10000);
    SetPlayerColor(playerid, 0xFF8C00FF); // Sichtbar Orange
    new Float:x,Float:y,Float:z;
    format(string,256,"Admin");
    aduty[playerid] = 1;
    return 1;
    }
    else if(aduty[playerid] == 1) //Wenn er den Befehl eingibt und die Variable diesmal auf True/1 ist weil man den Befehl schonmal eingegeben hat
    {
    new Name[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(playerid,Name,sizeof(Name));
    format(string,sizeof(string),"Admin %s befindet sich nun nicht mehr im Adminduty!",Name);
    SendClientMessageToAll(GELB,string);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 0);
    SetPlayerColor(playerid, 0xFFFFFF00); // Unsichtbar Weiß
    aduty[playerid] = 0;
    }


    return 1;
    }

    Hey.
    Gutet Tutorial, doch ich habe eine Frage.Wie mache ich das mit skin und der position? Ich hab alles versucht aber es klappt nich.Bin langsam am verzweifeln ;(


    Ich habe schon bei Onplayerspawn
    if(dini_Isset(accFormat,"skin"))
    {
    SetPlayerSkin(playerid,Spieler[playerid][skin]);
    }


    eingefügt,da BlackFox das mit lastx etc auch so gemacht hat. Jedoch ohne auswirkung

    Am Anfang sollen alle marker deaktiviert werden.Nur wenn man /aduty eingibt, nachdem man schon aduty war (alsoa duty verlasse) soll nur die Markierung von demjenigen gelöscht werden.Also ,dass er nicht mehr angezeigt wird.
    Und jetztz nocheine frage.Wie mache ich nun, dass wenn man in aduty reingeht, dass man wieder auf der karte markiert wird?

    Nein der meint das kleine Miniflugzeug.Also wenn du nen /veh befehl machst, beidem du im car gespawnt wirst kannste rein aber sonst weiß ichs auch nicht.

    Ich möchte, dass mein Name weiß angezeigt wir und ich auf der karte nicht mehr sichtbar bin, wenn ich /stopaduty eingebe.


    //EDIT: Warst du nich ma bei [SOUL] ???

    teil meines aduty befehls


    dcmd_aduty
    {
    SetPlayerColor(playerid,COLOR_ORANGE);
    }
    Nun möchte ich das wieder rückgängig machen, sodass mein Name wieder weiß ist und ich nicht mehr auf der Karte sichtbar bin.