Beiträge von Zeuto

    Zuerst musst du die Variablen definieren, da ich nicht weiß, wie du das in deinem Script machst, habe ich das nun so gemacht:


    new pPayday[MAX_PLAYERS]; //Das Geld, das er verdient hat
    new pPaydayTime[MAX_PLAYERS]; //Die Zeit, die vergangen ist
    Dann musst du für den Timer das public forwarden:
    forward payday_Timer(); //Das Public forwarden
    In OngameModeInit musst du nun den Timer auch starten:
    public OnGameModeInit()
    {
    SetTimer("payday_Timer", 1000*60, true); //1000*60 = 1 Minute
    }

    So und nun kommt der Payday an sich:
    public payday_Timer()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(SpielerInfo[playerid][pEingeloggt] == 1) //Eingeloggt Abfrage bitte anpassen
    {
    pPaydayTime[i]++;
    if(pPaydayTime[i] == 60)
    {
    //Payday Beispiel:
    GivePlayerMoney(pPayday[i]);
    pPayday[i] = 0;
    pPaydayTime[i] = 0;
    }
    }
    }
    }


    Das Ganze hab ich auf die Schnelle gemacht. Kann sein, dass dort jetzt Fehler sind, aber so grob muss es funktionieren.
    Den Rest musst du dir nun selber erarbeiten, bspw. das Speichern der Zeit und wie viel Geld der Spieler schon erarbeitet hat.


    //edit entweder die Version von HydranT, bei jedem Connect, oder einfach standartmäßig den Timer schon vom Serverstart starten, dann nimmst du mein Beispiel.

    Du hast doch ein Konzept, ich frage mich wieso du nicht weißt, wie du anfangen sollst.
    Ich helfe dir ein wenig auf die Sprünge:


    Als erstes kannst du einen Timer erstellen, der jede Minute wiederholt wird und die Paydayzeit bei jedem um 1 "erhöht". Bei 60 kannst du dann bei dem Spieler einen Payday durchführen. Dort kommt dann alles rein, was du da oben geschrieben hast. Die Rechnung und die Abfragen.


    Das sollte schonmal ein guter Anfang sein. Der Rest kommt eigentlich von selbst.

    Mit der Abfrage IsPlayerNPC(playerid);
    Würde dann ungefähr so aussehen..



    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
    {
    if(issuerid != INVALID_PLAYER_ID && weaponid == 34 && bodypart == 9)
    {
    if(IsPlayerNPC(playerid))
    {
    SetPlayerHealth(playerid, 0.0);
    }
    }
    return 1;
    }




    ocmd:supcar(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdminlevel] < 1) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 1");
    if(!IsPlayerConnected(playerid))return SendClientMessage(playerid,Rot,"Du musst eingeloggt sein!");
    if(SupCarID[playerid] == 1)
    {
    SendClientMessage(playerid,Rot,"Das Auto wird gelöscht!");
    DestroyVehicle(SupCarID[playerid]);
    Delete3DTextLabel(SupCarText[playerid]);
    SupCarID[playerid] = 0;
    }
    ShowPlayerDialog(playerid,DIALOG_SUPCAR,DIALOG_STYLE_LIST,"Supauto Menü","Sultan\nCheetah\nSandking","Wählen","Abbrechen");
    return 1;
    }



    //edit: Destroy3DTextLabel --> Delete3DTextLabel .. Sorry, wenn ich für Verwirrung gesorgt habe, habe nicht genau darüber nachgedacht :)

    Naja ist ja auch egal. Ich hab jetzt alle Dateien aktualisiert, ich schau mal bis morgen und starte ab und zu mal den Server neu. Falls das Problem behoben ist, ist gut, wenn nicht, dann melde ich mich wieder :)

    Naja ich weiß ja nicht welchen Part du willst^^ Das Script ist 4,6k Zeilen lang und es betrifft fast jede Stelle.


    //edit: Hier einfach mal meinen /goto Befehl:



    dcmd_goto(playerid, params[])
    {
    if(!IsPlayerAnAdmin(playerid, 3)) return 1;
    new pid;
    if(sscanf(params, "u", pid)) return SCM(playerid, FARBE_BLAU, "HILFE: "MSG_DEFAULT""/goto [SpielerID/Name]"");
    if(!IsPlayerConnected(pid) || IsPlayerNPC(pid)) return SCM(playerid, FARBE_ROT, "SPAWN: "MSG_HELLROT"Ungültiger Spieler!");
    if(SpielerInfo[pid][pLoggedIn] == 0) return SCM(playerid, FARBE_WARNUNG, "GOTO: "MSG_DEFAULT"Der Spieler ist nicht eingeloggt!");
    new Float:x, Float:y, Float:z, vw, int;
    GetPlayerPos(pid, x, y, z);
    vw = GetPlayerVirtualWorld(pid);
    int = GetPlayerInterior(pid);
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    SetVehiclePos(vehicleid, x+2, y+2, z);
    SetPlayerVirtualWorld(playerid, vw);
    SetPlayerInterior(playerid, int);
    return 1;
    }
    SetPlayerPos(playerid, x, y, z);
    SetPlayerVirtualWorld(playerid, vw);
    SetPlayerInterior(playerid, int);
    return 1;
    }

    Jo, guten Abend zusammen,


    und zwar habe ich ein Problem, was mir tierisch auf den Senkel geht.
    Ich habe einen Homeserver am Laufen mit einem Selfmade Script und das Problem ist, dass, obwohl der Spieler connected ist, bei der Abfrage IsPlayerConnected immer 0 rauskommt.
    Habe inzwischen auch sscanf upgedatet, aber es funktioniert trotzdem nicht.


    Das Problem tritt nur ab und zu auf. Das heißt, wenn ich diesen Bug habe und den Server neustarte, ist der Bug nicht mehr da, wenn ich am Script etwas umschreibe bzw. hinzufüge und wieder den Server neustarte, dann kann es sein, dass der Bug wieder auftritt.


    Und das Problem tritt meistens bei ID 1 auf.


    Ich hoffe ihr könnt mir helfen..

    Ersetz mal localhost durch 127.0.0.1, localhost hat bei mir nie funktioniert. Dann überprüf mal deine Benutzer auf der MySQL Datenbank. Ob der User "Server" auch alle Rechte besitzt, bzw. die nötigen Rechte.

    Um das Ganze klar zu stellen, das war nicht mein Beitrag, sondern ein Beitrag des "richtigen Projektleiters". Da er keinen Account besitzt, der hier was reinposten kann, habe ich das Ganze kopiert und als Zitat hier eingefügt, wenn ihr euch wundert, warum das Ganze ein Zitat sein soll. Habe das Ganze jetzt gelöscht, weil mir das ein wenig zu doof wird, wenn man nicht mal checken kann, warum das ein Zitat ist und ich dann am Ende angemotzt werde..


    Daher auch der Grund, warum man sich bei der E-Mail Adresse melden sollte, weil ich die Fragen nicht beantworten kann, sondern der Projektleiter

    Guten Abend zusammen,


    ich habe mich heute mal wieder, nach längerer Zeit an ein Selfmade gesetzt (aus Langeweile) und komme an einem Punkt nicht weiter.
    Ich habe ein Register Dialog erstellt, ein Ausschnitt aus dem Script:


    new password[129];
    WP_Hash(password, sizeof (password), inputtext);
    new query[500];
    mysql_format(db, query, sizeof query, "INSERT INTO accounts_main (pName, pPasswort) VALUES (%e, %s)", SpielerInfo[playerid][pName], password);
    printf(query);
    mysql_function_query(db, query, false, "", "");


    In der Tabelle wird aber nix erstellt, in der mysql_log.txt steht folgendes:

    Code
    [19:40:02] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'MrHansWurst' in 'field list'


    Eins verstehe ich nicht, wieso will er, dass ein Feld "MrHansWurst" heißt. Das ist der Name, mit dem ich mich in SAMP einlogge. Da hätte wenigstens stehen sollen, dass "pName" nicht existiert.


    Hier ein Screen der Tabelle:
    http://www11.pic-upload.de/10.09.14/8lyjlqjmauvx.png


    Ich hoffe, ihr könnt mir ein wenig weiterhelfen..


    //edit: Da ich ja den query noch printen lasse, hier der Auszug aus dem log:

    Code
    [19:40:02] INSERT INTO accounts_main (pName, pPasswort) VALUES (MrHansWurst, XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)

    (Das Passwort habe ich mit Absicht entfernt..)

    Einfach neben die Zelle stellen und ein wenig mit den Koordinaten spielen.


    AAm besten du stellst dich als erstes etwas weiter weg von der Zelle und speicherst diese Koordinaten ab. Dann gehst Du etwas näher ran speicherst nochmal die Koordinaten ab. Dann schaust du einfach welche Koordinaten sich wie verändert haben. So Kannst du ganz einfach die Koordinaten herausfinden.

    Das Problem hatte ich auch mal. Probier mal dieses Array Global zu schreiben. Also signFormat[800] irgendwo ganz am Anfang des. Scriptes. Ansonsten kannst Du es, wie Kaliber es schon geschrieben hat, die Zelle Anzahl verkleinern.


    #Handy

    Du könntest zuerst mit ein paar Variablen bzw. enum beginnen. Das Ganze geht auch als Array.. So..
    Falls du ein Array nutzt, kannst du ja z.B. die Variable "Gun" nutzen, dass es dann so aus sieht:


    new gun[MAX_FRAKTIONEN] = 0; //MAX_FRAKTIONEN muss man dann noch mit #define definieren


    So hast du nun schonmal die Waffen, dann kannst du auch etwas einfügen, wie:
    new ammo[MAX_FRAKTIONEN] = 0; //MAX_FRAKTIONEN muss man dann noch mit #define definieren


    Hast du doch schon mal einen guten Anfang oder? So kannst du das Ganze schon mal weiterführen.


    Natürlich kannst du auch andere Variablennamen nutzen.


    Mit freundlichen Grüßen
    Zeuto