Beiträge von Mike Toreno

    Da du es ja jeden zweiten PayDay haben willst, musst du zusätzlich noch eine neue Zeile für die Speicherung anlegen. Ich gehe mal davon aus, dass du auf Dateien (Standard GF-Speicherung?) und nicht MySQL basierst.


    Unter enum pInfo:


    pPayTime


    Unter OnPlayerRegister zu den anderen fwrite(hFile, var); dann folgendes:


    format(var, 32, "PayTime=%d\n",PlayerInfo[playerid][pPayTime]);fwrite(hFile, var);


    Unter OnPlayerLogin zu den anderen ini_GetValue( Data ); folgendes:


    if( strcmp( key , "PayTime" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pPayTime] = strval( val ); }


    Unter die zwischenspeicherung (GF meist OnPlayerUpdate) zu den anderen fwrites:


    format(var, 32, "PayTime=%d\n",PlayerInfo[playerid][pPayTime]);fwrite(hFile, var);


    Zu deinem PayDay Timer:


    Entferne die Zeile:


    PlayerInfo[i][pExp]++;


    und füge zeitgleich folgendes hinzu:


    if(PlayerInfo[playerid][pDonateRank] == 1)
    {
    PlayerInfo[playerid][pPayTime]++;
    if(PlayerInfo[playerid][pPayTime] > 1)
    {
    PlayerInfo[playerid][pPayTime] = 0;
    PlayerInfo[playerid][pExp] += 2;
    }
    }
    else PlayerInfo[playerid][pExp] += 2;

    Ja, sicher.


    Entferne die Zeile:


    GivePlayerMoney(giveplayerid, 200000); // 350k


    und tausche diese mit diesen aus:


    if(value == 1)
    GivePlayerMoney(giveplayerid,350000);
    else //im Grunde dann alles über Donator 2
    GivePlayerMoney(giveplayerid,750000);

    Bis zu der Zahl, die vom Befehl genehmigt wird (idF. kein Limit^^).


    Wenn du willst kannst du dir auch ein Limit setzen, füge dann einfach unter value = strval(tmp); folgendes ein:


    if(value < 1 || value > 5) return SendClientMessage(playerid,COLOR_GREY,"FEHLER: Du kannst nur Ränge von 1-5 vergeben!");

    Warum denn mit einem Timer? Ist doch Käse und zieht Unmengen unnötige Ressourcen!


    Zeig mal deinen Edit-Befehl für die Häuser her, dann besser ich es dir dementsprechend aus.

    Mal abgesehen davon, dass der vorherig gepostete Code recht schlampig geschrieben wurde... Bitte:


    if(strcmp(cmd, "/giveDonator", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] >= 1450)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /giveDonator [playerid/SpielerName] [donatorrank]");
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /giveDonator [playerid/SpielerName] [donatorrank]");
    new value;
    value = strval(tmp);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast Spieler %s den Donator-Rang4 gegeben *",giveplayer);
    SendClientMessage(playerid, COLOR_YELLOW, string);
    format(string, sizeof(string), "* Admin %s hat dir deinen Donator Rang4 gegeben.",sendername);
    SendClientMessage(giveplayerid, COLOR_YELLOW, string);
    format(string, sizeof(string), "* Herzlichen glückwunsch! Du hast nun einen Donator-Rang! Siehe unter /donatorhelp zu sehen was er dir für Vorteile bringt.",sendername);
    SendClientMessage(giveplayerid, COLOR_YELLOW, string);
    GivePlayerMoney(giveplayerid, 200000); // 350k
    PlayerInfo[giveplayerid][pExp] += 12 ; // 12 RP
    PlayerInfo[giveplayerid][pCoins] += 100; // 100 Coins
    PlayerInfo[giveplayerid][pDonateRank] = value; // Premium Rang
    new iyear, imonth,iday;
    getdate(iyear, imonth, iday);
    format(string, sizeof(string), "AdmCmd: %s hat %s den Donator-Rang gegeben! (%d.%d.%d)", sendername, giveplayer,iday,imonth,iyear);
    ABroadCast(COLOR_LIGHTRED, string, 1);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Das kann nur der Serverleiter!");
    return 1;
    }
    }
    return 1;
    }


    Sorry, der Browser rückt alles falsch ein. :wacko:

    Ich habe dir auch einige Fehler ausgebessert und diverse Korrekturen vorgenommen.


    if(strcmp(cmd, "/advertise", true) == 0 || strcmp(cmd, "/ad", true) == 0)
    {
    if(PlayerInfo[playerid][pLevel] >= 2)
    {
    if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_GREY, " Du bist noch nicht eingeloggt !");
    if(PlayerInfo[playerid][pGangJailed] == 1 || PlayerTied[playerid] >= 1) return SendClientMessage(playerid, COLOR_GRAD1, "Du kannst jetzt keine Werbung schreiben!");
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx, result[128];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: (/ad)vertise [text]");
    if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
    {
    format(string, sizeof(string), "Bitte Versuch es Später wieder %d sekunden zwischen einer Werbung!", (addtimer/1000));
    return SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    new payout = idx * 10;
    if(GetPlayerMoney(playerid) < payout)
    {
    format(string, sizeof(string), "* Du hast %d Zeichen benutzt, das kostet $%d, du hast nicht genug dabei.", offset, payout);
    return SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    }
    GivePlayerMoney(playerid, - payout);
    SBizzInfo[5][sbTill] += payout/3;
    ExtortionSBiz(5, payout);
    format(string, sizeof(string), "Werbung: %s, Kontakt: %s, Telefonnummer: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_Grove_COLOR,string);
    format(string, sizeof(string), "~r~Rechnung: $%d~n~~w~Nachricht hatte: %d Zeichen.", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    if (PlayerInfo[playerid][pAdmin] < 1)
    {
    SetTimer("AddsOn", addtimer, 0);
    adds = 0;
    }
    } else SendClientMessage(playerid,COLOR_RED,"Du brauchst Level 2 um eine Werbung zu schreiben.");
    return 1;
    }

    Der Schlüssel wird gesetzt und auch ordentlich ausgelesen.


    Bist du dir sicher, dass du die Spieler richtig abspeicherst? Das wäre im Moment das einzigst plausible, auf Anhieb sehe ich da keine größeren Fehler.


    Basierst du auf Dateien oder MySQL?


    LG


    Das war ein generelles Beispiel, Pappnase.

    In dem von dir geposteten Code ist die Zeile doch noch vorhanden? :P


    Probiers mal so.


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(tban,4,cmdtext);
    dcmd(tunban,6,cmdtext);


    new string[128],
    playermoney,
    sendername[MAX_PLAYER_NAME],
    giveplayer[MAX_PLAYER_NAME],
    playername[MAX_PLAYER_NAME],
    cmd[128],
    tmp[128],
    giveplayerid,
    moneys,
    idx;
    cmd = strtok(cmdtext, idx);
    GetPlayerName(playerid,sendername,sizeof(sendername));


    // ANTI CMD SPAM
    CMDSpams[playerid]++;
    if(CMDSpams[playerid] >= 8 && PlayerInfo[playerid][pAdmin] == 0 && PlayerCuffed[playerid] == 0 && PlayerTied[playerid] == 0)
    {
    format(string, sizeof(string), "%s wurde vom System gekickt. Grund: Command-Spam",sendername);
    SendClientMessageToAll(M_BOT_COLOR, string);
    Kick(playerid);
    return 1;
    }

    Quatsch - sollte das der Fall sein, meckert der Server offentlich herum.

    In den meisten Fällen ist dem so, bei Streamern wie dem von Icognito allerdings nicht. Warum auch? Wenn nichts in der Server.cfg steht gibts auch nichts zu meckern.


    GF-Edits (so wie er es auch geschrieben hat) nutzen vom Hause aus schon keine externen Filterscripts, warum sollte er dann ein Login-Filterscript nutzen?


    Ist aber alles nur reine Spekulation und trägt hier auch nichts zum Thema bei.

    Entferne mal test-weise die Zeile M_OnPlayerCommandText unter OnPlayerCommandText.


    Ist ein typischer Fehler bei LoH-Scripten. Ansonsten mal nach der m_bot include suchen, findet man hier haufenweise.


    Zudem falsch gewählter Bereich... ;)

    Hast Du vielleicht vergessen ein Filterscript oder ein Plugin hochzuladen?


    Das musst Du ja unbedingt beachten...

    Filterscript nicht unbedingt, hast du statt den Windows-Plugins auch die richtigen Linux-Plugins hochgeladen und in der server.cfg die .so Endung an die Plugins angehängt?


    LG

    Hi,


    unter OnPlayerDeath die Position mit 3 Floats abfragen, eine Variable erstellen und diese auf 1 setzen (eventuell noch ein Totenkopf-Pickup o.ä. hinzufügen), beim Befehl /wiederbeleben die Position abfragen und nach dem der Timer abgelaufen ist das Pickup löschen und die zuvor auf 1 gesetzte Variable wieder auf 0 setzen.


    Wenn du willst, schreibe ich dir demnächst ein kleines Beispiel.


    Edit: Warum erstellst du zwei mal das selbe Thema? Sinnlos.


    /wiederbeleben einfügen? Aber wie?

    Deine ServerLog bringt hier relativ wenig. Da du ein Godfather nutzt, sollte die Variable pPhousekey für das zuweisen der Schlüssel genutzt werden (so lautete die glaube ich).


    Zeig mal deine Zeilen vom /buyhouse.

    Irgendwie sinnlos... Warum setzt du einem stock ein forward? Das wird doch garnicht benötigt und erzeugt nur unnötige Warnungen!


    public hackgate()
    {
    MoveObject (lspdinside, 239.69999694824, 116.59999847412, 1004.9000244141,3);
    SendClientMessage(playerid,COLOR_BLUE,"Du hast geschafft, das Tor zu öffnen!");
    OnPlayerCommandText(playerid,"/me beendet das Hack-Programm");
    lspdvar1 = 1;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsACop(i))
    {
    SendClientMessage(i,COLOR_RED,"HQ: Achtung der Einbrecher ist bereits im LSPD!!! ");
    }
    }
    }


    return 1;
    }


    Poste mal die Zeile, in der dem Tor die Variable "lspdinside" zugewiesen wird. Eventuell hast du es mit dem Streamer erstellt und nur nicht angepasst. Benutzt du denn einen Objektstreamer? Zudem sehe ich nicht wirklich einen Sinn in der lspdvar1-Variable. Wo nutzt du die? In deinem Code setzt du sie unnötig auf 1.