Beiträge von Blacktaro

    Ich würde es wie Manniac machen. Mithilfe von gettime(); den UNIX Timestamp holen, die Wartezeit in Sekunden addieren und beim Befehl überprüfen, ob gettime(); größer ist. Zur Erklärung: der UNIX Timestamp entspricht der aktuellen Zeit in Sekunden seit dem 1. Januar 1970 00:00.

    Du kannst schonmal nicht den Namen speichern lassen, wie du das da tust. wenn du durch einen Befehl den Namen änderst, kann die Datenbank das nicht speichern, weil du in der Speicherung WHERE `Name` stehen hast un der Datensatz dann nicht existiert, nach den du updaten willst. Außerdem speicherst du im SQL Befehl das Level doppelt ab. Ansonsten fällt mir nichts auf.

    die Idee mit der _GET Veriable ist schonmal gut, so würde ich es auch machen.
    wir brauchen erstmal eine anzahl von leuten pro seite. z.B. 20. du kannst nun also die Seite mal 20 nehmen und bekommst so einen Bereich, der angezeigt wird. Er geht von ((page*20)-19) bis (page*20). Nun musst du dort, wo die Datensätze ausgegeben werden eine Variable von 1 hochzählen lassen und mithilfe einer if-Abfrage abfragen, ob die Variable im Bereich liegt.
    Unten musst du dann nur Links zu den Seiten einbauen, was du mithilfe der Anzahl-Variable machen kannst.


    MfG

    Verbunden hat MySQL. Die benötigten Tabellen sind in der Datenbank nicht vorhanden. Sprich dein Kumpel muss dir, damit es klappt, noch die Datenbankstruktur geben(je nachdem auch den Inhalt davon).
    //edit:
    Dein Plugin scheint auch nicht ganz zu funktionieren...
    Eventuell veraltet oder das falsche?
    Arbeite dich am besten mal in die Grundlagen von MySQL ein.
    Die brauchst du auf jeden Fall, wenn du damit arbeiten willst.

    Mach das mal unter OnVehicleStreamIn. Dann schließt er ab, wenn er in einem bestimmten Radius ist. Ansonsten wird das Fahrzeug wieder aufgeschlossen, wenn er weg geht und wieder her kommt.

    public OnVehicleStreamIn (vehicleid, forplayerid)
    {
    SetVehicleParamsForPlayer (vehicleid, forplayerid, 1, 0);
    }

    mach es mal so und probier es aus:

    case DIALOG_ALTER:
    {
    if(!response)return 0;
    else if(response)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,Gruen,"Du musst dein Alter Angeben!");
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{FF8B00}*SENSIERT*","{FFFFFF}Nun sind wir beim Zweiten Schritt der Registration! Hier musst du dein Alter angeben!\n z.B. {FF0000}24","Bestätiegen","Abbruch");
    return 1; //Damit unten das Alter nicht überschrieben wird.
    }
    if(INI_Open(getINI(playerid)))
    {
    INI_WriteInt("Alter",strval(inputtext));
    INI_Save();
    INI_Close();
    SpielerInfo[playerid][sAlter] = strval(inputtext);
    }
    }
    }


    //EDIT:
    Jetzt habe ich den richtigen Fehler gesehen.
    Er liegt darin, dass du die Variable "SpielerInfo[playerid][sAlter]" bei OnDialogResponse nicht setzt und sie beim Logout durch 0 ersetzt wird. siehe oben



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys == KEY_WALK) //überprüfen ob newkeys dem define KEY_WALK entspricht
    {
    if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
    {
    if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
    else //das auch noch hinzufügen, nur um auf Nummer sicher zu gehen.
    {
    MoveObject(pnstor, 0, 0, 10, 2.00);
    ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
    return 1;
    }
    }
    }
    }

    Ich hoffe, ich konnte dir helfen

    ich denke er würde keine anfrage hier schreiben wenn das script nicht auf mysql basiert :) bzw. auf file gehts auch aber ist umständlicher


    ja, ich weiß, dass es auch auf File-Basis geht, nur auf MySQL läuft alles viel schneller und auch einfacher. Datenbankimport/-export. Und ich muss natürlich vorher fragen pb er das hat ^^

    Ich würde dir ein Control Panel mit allen genannten Funktionen schreiben.
    Dazu muss aber natürlich seitens des SAMP Skripts alles programmiert sein, also MySQL Datenbank etc.
    Das ganze würde dich 50€ PaySafe kosten.
    //edit: Es wäre hilfreich wenn ich mit dir über Teamspeak/Skype kommunizieren könnte...

    Die Webseiten, von denen ich gesprochen habe, sind momentan noch unzensiert, d.h. dort stehen noch Namen etc. der alten Auftraggeber ^^
    Und aus diesem Grund werde ich natürlich erstmal alles zensieren und auf eine "Test-Datenbank" legen, damit alles ohne Schaden getestet werden kann.


    //edit:
    Die Referenzen sind jetzt unter diesem Link zu erreichen.


    //edit²:
    Rechtschreibung

    naja, ein Skript gleich dem von German RolePlay zu erwarten ist schon sehr heftig, die arbeiten da ja auch schon 4 Jahre hart dran. 50€ sind für die Menge an Arbeit sehr wenig.

    Ich habe bisher schon folgende System mit MySQL und PHP gemacht:

    • Login/Logout-System(Standart^^)
    • Control Panel für SAMP-Server(Admin-CP mit Bannungen, Übersichten; User-CP mit Account-,Fahrzeug- und Fraktionsübersicht; Leader invite/uninvite/Rang-Change)
    • Webseite mit Termin-Plänen, elektronischer Datenerfassung bestimmter Personen etc.

    So wie du das da machen willst, ist das viel zu Aufwendig.
    Die Schrift bekommst du schonmal nicht genauso hin, weil nur wenige Schriftarten verfügbar sind.

    Du machst am besten so:
    1. Du speicherst das Vermögen des Spielers in einer ganz normalen Spielerinfo. Entweder mit SetPVarInt oder einem enum.
    Ich mache es mal mit SetPVarInt.
    ganz oben als forward:
    forward public moneycheat();
    Bei OnGameModeInit:

    SetTimer("moneycheat", 10000, 1);

    Der Befehl bei OnPlayerCommandText:

    if(strcmp(cmd, "/givemoney", true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 5)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /givemoney [playerid/PartOfName] [money]");
    return 1;
    }
    new playa;
    new money;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    money = strval(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 5)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    ConsumingMoney[playa] = 1;
    SetPVarInt(playa, "Geld", GetPVarInt(playa, "Geld") + money);
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "AdmCmd: %s hat %s €%d gegeben.",sendername,giveplayer,money);
    ABroadCast(COLOR_RED,string,5);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Das darfst du nicht tun!");
    }
    }
    return 1;
    }

    Und schließlich die public function:

    public moneycheat()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(isPlayerConnected(i))
    {
    ResetPlayerMoney(i);
    GivePlayerMoney(i, GetPVarInt(i, "Geld"));
    }
    }
    }


    So wird beim Geld geben immer nur die Variable verändert.
    Da Cheatprogramme Servervariablen nicht verändern können, kann man sich auch kein Geld cheaten.
    Nur bei jedem Geldtransfer(Banksystem etc.) musst du mit SetPVarInt(playerid, "Geld", wert); und GetPVarInt(playerid, "Geld"); arbeiten statt mit GivePlayerMoney.