Beiträge von D4rkCl3ric

    Ich weiß zwar nicht was genau du hier zusammen rechnest aber du hast schon Recht es dauert etwas. Es ist aber mehr oder weniger positiv weil es bei jeder Fraktion das gleiche ist (Copy + Paste) ^^
    Es gibt bestimmt andere Möglichkeiten genauso, mit stock / public zusammenarbeiten aber soweit ich weiß glaube ich dass deine angefangene Methode die "einfachste" ist :S

    Es wäre aber nicht Falsch wenn du es so schreiben würdest wie du bisher es geschrieben hast. Flaggen kannst du mit SetPlayerMapIcon spawnen lassen und mit SetPlayerScore die Punkte verteilen, oder du speicherst die Punkte auf eine eigene Variable und setzt diese wieder auf 0 wenn jemand 100 Punkte erreicht

    Wenn du kein pickup haben willst, dan kannst du das System vergessen. Ein pickup ist nichts weiteres als ein Objekt welches auf dem Boden liegt, wo wenn ein Spieler darüber rennt etwas passiert. In deinem Fall wäre es dass der Spieler eine Waffe bekommt.
    Außerdem habe ich mich oben verschrieben du musst "CreatePickup(....)" schreiben. Es wird sich daran überhaupt nichts ändern außer dass du es aufheben kannst und es sich auf der stelle drehen wird


    // Edit text hinzugefügt.

    Ich bin mir nicht sicher, aber vielleicht hätte ich da ein paar Lösungsvorschläge:
    1. Vielleicht hast du den Ordner "Accounts" in den Scriptfiles nicht angelegt.
    2. Versuch mal aus dem:
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    das zu machen:
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.datei",name);


    wenn das auch nicht klappt hätte ich den letzten Lösungsvorschlag:
    forward Register(playerid,Key[]);


    und danach anstatt stock:
    public Register(playerid,Key[])
    {
    }
    Hoffentlich hilft etwas :S

    Der Spieler muss unter "OnPlayerDeath" auf seiner Position (GetPlayerPos(playerid,x,y,z)) eine Waffe droppen (CreateObject(.....)) und du musst dan unter OnPlayerPickUpPickup die Waffenid (GetPlayerWeapon(playerid,WaffenID) und die Munition (GetPlayerAmmo(playerid)) Abfragen. Und wenn alles zutrifft gibst du ihm einfach via GivePlayerWeapon(playerid,waffenid,munition) die jeweilige Waffe

    Im Script sind die Preise ^^
    ich weiß nicht genau wie es aussieht aber es ist mit den Autohäusern gespeichert, es sieht ungefähr so aus:
    // Autohaus
    {2,451,5000},
    {2,522,20000}


    Die 2 ist das Autohaus, Meine 2 AutoIDs 451 und 522 (Turismo und NRG) und rechts davon steht der preis

    Das mit den Teleport Befehlen wirst du wohl selbst auf die Reihe kriegen müssen.


    if(IsPlayerImAdminJail(playerid)) return SendClientMessage(playerid,COLOR,"Du bist im Adminjail du darfst keine Teleportbefehle benutzen");


    Sonst ist der Befehl eigendlich ziemlich einfach:
    Irgendwo ganz oben folgendes:
    forward AdminJail(playerid);


    Dannach:
    ocmd:adminjail(playerid,params[])
    {
    new pID,Zeit;
    if(sscanf(params, "ui", pID, Zeit)) return SendClientMessage(playerid,COLOR,"Benutze: /adminjail [playerid] [Zeit in Minuten]");


    SetPlayerPos(playerid,x,y,z);
    SetPlayerInterior(playerid, interiorid);
    Zeit = Zeit * 60000;
    SetTimerEx("AdminJail", Zeit, 0, "i", playerid);
    return 1;
    }


    Und zum Schluss:
    public AdminJail(playerid)
    {
    SpawnPlayer(playerid);
    }

    Sorry bin noch bischen zu dumm dafür :D


    Sag sowas doch gleich erleichtert uns ne menge arbeit :D haha nur Spaß, wir waren alle mal Anfänger ^^
    Okai also:
    Dan fügen wir mal alle Funktionen zusammen was wir heute so gelernt haben.
    forward Event();
    new Eventvar = 0;
    forward warten();
    new wartenvar = 0;


    if (strcmp(cmd, "/Event", true) == 0)
    {
    if(Eventvar == 1) return SendClientMessage(playerid,COLOR_WHITE,"Dieser Befehl kann nur alle 20min benutzt werden!");
    if(wartenvar == 2) return SendClientMessage(playerid, COLOR_WHITE,"Du hast das Event verpasst!");

    if(wartenvar == 1)
    {
    // Das Event wurde gestartet und für 60 Sekunden kannst du nun hier alles einfügen was passieren soll.
    // z.B Wenn jemand /Event eingibt: SetPlayerPos(playerid,x,y,z);
    }
    wartenvar = 1;
    SetTimer("warten", 60000, 0);
    return 1;
    }


    public Event()
    {
    Eventvar = 0;
    wartenvar = 0;
    return 1;
    }


    public warten()
    {
    wartenvar = 2;
    SetTimer("Event",1200000,0);
    return 1;
    }


    Hier hast du sozusagen den kompletten Befehl, ich muss hoffentlich nicht erwähnen dass du "public Event" und "public warten" irgendwo ganz unten hinpacken sollst ^^
    MfG.
    D4rkCl3ric


    // Edit PWN vergessen

    Unter OnGameModeInit einen permanenten SetTimer einsetzen.
    forward FUNKTION();


    SetTimer("FUNKTION",1200000,1); // 1,2Mio = 20min


    public FUNKTION()
    {
    // Hier passiert das was alle 20min passieren soll
    }


    // Edit Timer

    Also entweder fügst du es so ein wie Kaliber es geschrieben hat (sinnvolle Methode) ;)
    oder du erstellst einen neuen Befehl so wie du es wolltest wo man als RCON Admin eingeloggt sein muss um den zu Benutzen:


    ocmd:i(playerid,params[])
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,ROT,"Du bist kein RCON Admin");


    new MSG[255],Text[255] ;
    if(sscanf(params,"s",Text))return SendClientMessage(playerid,ROT,"Fehler: /i Text");
    format(MSG,sizeof(MSG)," ((Admin %s: %s))",SpielerName(playerid), Text);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    SendClientMessage(i,GELB,MSG);
    }
    return 1;
    }

    Tony bei deinem "ShowPlayerDialog" würde ein Warning kommen.
    "Numbers of Arguments doesn't match definition"
    und damit du eine direkte Antwort darauf bekommst: Nein es wird nicht klappen

    if(strcmp(cmd,"/carsell",true)==0)
    {
    for(new i = 0; i < sizeof Autohaus; i++)
    {
    CreatePickup(1239,1,Autohaus[i][posx],Autohaus[i][posy],Autohaus[i][posz],-1);
    if(IsPlayerInRangeOfPoint(10,Autohaus[i][posx],Autohaus[i][posy],Autohaus[i][posz]))
    {
    for(new x=0; x<6; x++)
    {
    if(GetPlayerVehicleID(playerid)==Spielercar[playerid][x])
    {
    GivePlayerMoney(playerid,Autos[playerid][x][Preis]/2);
    }
    else
    {
    return SendClientMessage(playerid,ROT,"Das ist nicht dein Fahrzeug!");
    }
    }
    new Autodatei[100];
    format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d.ini",SpielerName(playerid),i);
    if(dini_Exists(Autodatei))
    {
    dini_Remove(Autodatei);
    GivePlayerMoney(playerid,Autos[playerid][i][Preis]/2);
    }
    }
    return 1;
    }
    }


    Hier, so sollte es klappen ^^

    Welches Command System benutzt du? Das ganz normale oder benutzt du ocmd,dcmd,zcmd,...
    oder es kann auch sein dass du meinen "if(strcmp(cmdtext,"/maske",true) == 0)" Befehl nicht unter OnPlayerCommandText gepackt hast

    if(strcmp(cmd,"/carsell",true)==0)
    {
    for(new i = 0; i < sizeof Autohaus; i++)
    {
    CreatePickup(1239,1,Autohaus[i][posx],Autohaus[i][posy],Autohaus[i][posz],-1);
    if(IsPlayerInRangeOfPoint(10,Autohaus[i][posx],Autohaus[i][posy],Autohaus[i][posz]))
    {
    for(new x=0; x<6; x++){ // 2 mal i definiert, mach hier daraus z.B ein X
    if(GetPlayerVehicleID(playerid)==Spielercar[playerid][i])
    {
    GivePlayerMoney(playerid,Autos[playerid][i][Preis]/2);
    }
    return SendClientMessage(playerid,ROT,"Das ist nicht dein Fahrzeug!");
    new Autodatei[100];
    format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d.ini",SpielerName(playerid),i);
    if(dini_Exists(Autodatei))
    {
    dini_Remove(Autodatei); // 1. dini_Remove großes "R", 2. hast du ein Semicolon vergessen (einfaches ; am Ende)
    GivePlayerMoney(playerid,Autos[playerid][i][Preis]/2);
    }
    else
    {
    format(Autodatei3,sizeof(Autodatei2),"/Autos/%s_Auto_%d.ini",SpielerName(playerid),i); // Autodatei ist wohl noch nicht erstellt (dini_Create als Tipp ^^)
    }
    }
    else
    SendClientMessage(playerid,WEIß,"Du bist bei keinem Autohaus!");
    }
    return 1;
    }
    }



    Das waren mal alle Fehler die ich auf den 1. Blick gesehen habe, Ich hoffe ich konnte dir helfen :S


    // Edit PWN eingefügt