Beiträge von M4rciii

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums

    if (strcmp("/rosenkaufen", cmdtext, true, 10) == 0)
    {
    if(PlayerToPoint(3.0, playerid,1513.4825,-1634.9133,13.3469))
    {
    if(GetPlayerMoney(playerid) >= 30)
    {
    GivePlayerWeapon(playerid, 14,1);
    GivePlayerMoney(playerid,-30);
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "Du Hast nicht genügend Geld");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, " Du bist nicht am Richtigen Ort");
    }
    return 1;
    }


    SO ist das richtig, das davor war Blödsinn.

    Ja, dazu sollte aber noch wissen, dass es der/die/das State PLAYER_STATE_DRIVER sein muss.



    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(strcmp(dini_Get(vehicle[vehicleid],"besitzer"),name,true)==1 && strcmp(dini_Get(vehicle[vehicleid],name),"key",true)==1 && auf[playerid][vehicleid]!=1){}
    else RemovePlayerFromVehicle(playerid);
    }
    return 1;
    }

    Ne, hab den Fehler gefunden. Er ist in deinem Code:
    public NotOnWhitelist(playerid)
    {
    new
    ThePlayer[MAX_PLAYER_NAME],
    key[128];
    GetPlayerName(playerid, ThePlayer, sizeof(ThePlayer));
    new File: file = fopen("whitelist.cfg", io_read);
    if (file)
    {
    while(fread(file,key))
    {
    if(strcmp(key,ThePlayer,true)==0) { return 1; }
    }
    }
    fclose(file);
    return 0;
    }


    public OnPlayerConnect(playerid)
    {
    if(WHITELIST == 1) // Steht nur dafür, ob sie auch aktiviert ist. Und das ist sie, das wird beim starten des Servers nämlich in das Serverfenster geschrieben
    {
    if(NotOnWhitelist(playerid)) { SendClientMessage(playerid, COLOR_RED, "Du stehst nicht auf der Whitelist!"); Kick(playerid); return 1; }
    }
    // Der Rest von OnPlayerConnect


    Wenn eine Datei erstellt werden soll, muss auch wo ein
    dini_Create(c);
    oder so ähnlich vorkommen. In Etwa so:


    if(dini_Exists(c)) { dini_Create(c); }
    dini_IntSet(c,"id",1);
    dini_FloatSet(c,"x",-1528.3800);
    dini_FloatSet(c,"y",161.5145);
    dini_FloatSet(c,"z",3.6471);
    dini_FloatSet(c,"angel",315.6407);
    dini_IntSet(c,"cid",-1);
    dini_IntSet(c,"cid2",-1);
    dini_Set(c,"besitzer",name);

    public Whitelist(playerid)
    {
    new
    ThePlayer[MAX_PLAYER_NAME],
    key[128];
    GetPlayerName(playerid, ThePlayer, sizeof(ThePlayer));
    new File: file = fopen("whitelist.cfg", io_read);
    if (file)
    {
    while(fread(file,key))
    {
    if(strcmp(key,ThePlayer,true)==0) { return 1; }
    }
    }
    fclose(file);
    return 0;
    }


    PS: Der Fehler war, dass die Datei nicht in key reingelesen wurde und somit key ein leerer String war.

    SetTimer("Nachricht",180000,1);
    SetTimer("Nachricht2",300000,1);
    SetTimer("Nachricht3",480000,1)


    Hier können eig nur Errors kommen, wenn du es an einen unmöglichen Ort getan hast, zB außerhalb eines Callbacks. Also tu es in OnGameModeInit rein.


    BrighT: i und j sind verschiedene Buchstaben :P

    Könnte daran liegen, dass du kein strtok nutzst und somit auch kein idx als Länge benutzt wird.
    Mach es so:
    dcmd_ad(playerid,params[]){return dcmd_advertise(playerid,params);}
    dcmd_advertise(playerid,params[])
    {
    new sendername[MAX_PLAYER_NAME], string[128], result[64];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist derzeit nicht eingeloggt !");
    return 1;
    }
    if(PlayerInfo[playerid][pLevel] < 3)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst mindestens Level 3 sein !");
    return 1;
    }
    if(sscanf(params,"s",result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: (/ad)vertise [advert text]");
    return 1;
    }
    if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
    {
    format(string, sizeof(string), " Es wurde bereits geworben warte %d sekunden !", (addtimer/1000));
    SendClientMessage(playerid, COLOR_GRAD2, string);
    return 1;
    }
    new idx = strlen(result);
    new payout = idx * 25;
    if(GetPlayerMoney(playerid) < payout)
    {
    format(string, sizeof(string), "* Du hast %d erreicht dies kostet dich $%d, du hast nicht genug Geld.", idx, payout);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }
    PlayerMoney[playerid] -= payout;
    SBizzInfo[7][sbTill] += payout;
    ExtortionSBiz(7, payout);
    format(string, sizeof(string), "Werbung: %s, Nummer: %s Ph: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_GROVE_COLOR,string);
    format(string, sizeof(string), "~r~Paid $%d~n~~w~Message contained: %d Characters", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
    }
    return 1;
    }


    Sorry 4 fuckin' indentation

    Macht es denn Sinn, wenn einem Admin geschickt wird, er solle doch jemanden beobachten, die Person aber im selben Moment gebannt wird?
    Außerdem würde es hier Probleme geben:
    KillTimer(CheckWeapon);
    Da CheckWeapon die Funktion ist und nicht eine Variable mit der TimerID.
    Hoffe du verstehst, was ich meine :)

    Das könnte so klappen:
    public OnVehicleDeath(vehicleid)
    {
    if(vehicleid == lspdcar1)
    {
    DestroyVehicle(vehicleid);
    }
    return 1;
    }

    0x00000000


    Diese zwei Ziffern ist der Alpha-Wert (oder so) der Farbe, das bedeutet so viel wie Transparenz. Wenn die 00 is, dann is die Farbe nix. Also mach die 2 Zahlen zu AA und es wird halbtransparent. Mit FF wirds ganz untransparent ^^.


    Also mach die Farbe zu

    Code
    0x000000AA

    Da du ein INT-eger raushaben willst, solltest du bei "2" die Anführungszeichen weglassen.

    dcmd_klau(playerid,params[])
    {
    new pID;
    if(sscanf(params,"u",pID))
    {
    return SendClientMessage(playerid,ROT,"Benutzung: /klau [playerID] ");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit der angegebenen ID online");
    }
    if(GetDistanceBetweenPlayer(playerid,pID) < 5.0)
    {
    GivePlayerMoney(playerid,200);
    GivePlayerMoney(pID,-200);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht nah genug am Spieler");
    }
    return 1;
    }


    So, das ist jetzt ohne Schreibfehler wie "paramas" und "sscand". Du brauchst aber noch die Funktion GetDistanceBetweenPlayers, die im GF drin ist.
    Füg dann noch das in OnPlayerCommandText ein:
    dcmd_klau(klau,4,cmdtext);

    Danke, funktioniert! :thumbup:


    Neues Problem:


    Ist es möglich in einem Textfeld die Vorschläge auszublenden von den schon zuvor eigegebenen Wörter?
    Ich hab schon viel gegoggelt, aber bin nur auf "autocomplete="off"" gekommen, was nicht funktioniert. Manche sagen Nein, manche Ja, aber wissen nicht wie...