Beiträge von Jeffry

    Hab einen kleinen Fehler im Chat wenn ich diesen Command benutze:


    CMD:kick( playerid, params[])
    {
    new string[144], pID;
    if(GetPVarInt(playerid,"Level")<2) return SendClientMessage(playerid, -1, "Du musst ein "COLOR_BLUE"Administrator Level 2 {FFFFFF}sein, um diese Funktion nutzen zu können.");
    if(sscanf( params, "us[64]", pID, string)) return SendClientMessage(playerid, -1, ""COLOR_GREY"Verwendung: /kick <Name/ID> <Grund>");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, -1, ""COLOR_GREY"Dieser Spieler ist nicht online.");


    format(string, sizeof string, "%s ( %s | ID: %i ) hat %s ( %s | ID: %i ) gekickt, Grund: %s",pName(playerid),GetPlayerLevelName(playerid),playerid,pName(pID),GetPlayerLevelName(pID),pID,string);
    SendClientMessageToAll(-1, string);
    SetTimerEx("KickPlayer", 1000, false, "i", pID);
    return 1;
    }
    Variablen schreibt übrigens jeder Programmierer am Anfang klein.


    Und nutzt doch bitte http://www.tinypic.com und nicht diese beknackte pic-upload Seite, die voll mit Werbung ist. :thumbup:

    [22:46:35] *** Streamer Plugin: Include file version (0x27201) does not match plugin version (0x26105) (script needs to be recompiled with the latest include file)


    Also: Plugin und includes neu runterladen, script abändern und neu kompilieren.
    Du musst an alle CreateDynamicObject hinten noch den letzten Parameter anhängen (0 reicht da).

    Nein, das sind nur die Funktionen, nicht die Funktionsaufrufe.
    Du rufst diese Funktionen entweder direkt auf
    Geldanzigen(playerid);


    oder über einen Timer:
    SetTimerEx(Geldanzigen, 1000, 0, "d", playerid);


    Wie machst du es, und wo? Das müssen wir wissen.

    static const Float:sfspawns[][] = {
    {1087.3717,-1227.4813,15.8203,262.0435},
    {1309.7506,-1370.3428,13.5737,178.7725}
    };


    new idx = random(sizeof(sfspawns));
    printf("%f %f %f", sfspawns[idx][0],sfspawns[idx][1],sfspawns[idx][2]);
    SetPlayerPos(playerid,sfspawns[idx][0],sfspawns[idx][1],sfspawns[idx][2]);


    So geht es bei mir ohne Probleme.

    Also bei mir geht der Code so wie du ihn gepostet hast, ich glaube nicht, dass es daran liegt. Wo nutzt du das denn (Callback)?
    Füge das mal nach der Random-Auswahl ein:
    printf("%f %f %f", sfspawns[idx][0],sfspawns[idx][1],sfspawns[idx][2]);


    @[NGD]Manne: Das was du da machst hat keinen Sinn. Du definierst ein enum und benutzt es dann nicht, außerdem ist es an der falschen Stelle im Array eingefügt, es muss in die zweite Klammer. Die Zahlen bei SetPlayerPos müssen durch X, Y und Z ersetzt werden.
    Dein Code resultiert nur darin:

    //Edit: Kann man die Waffenmunition in dem Magazin abfragen? ( z.B. 953-7 [Gesamte Munition: 960] ), davon halt die "7" rausnehmen..

    Wenn das geht

    Kann man die Zahl dann auch wieder der Waffe setzen?
    Also, wenn der Spieler die Waffe wieder nimmt ( wieder zu dieser Waffe scrollt )


    Auf jeden Fall nicht mit einfachen Mitteln.
    Hier hast du ein Archiv Thread aus dem englischen Forum: http://forum.sa-mp.com/archive/index.php/t-314958.html
    Dort wurde sowas in der Art diskutiert, wobei aber nichts raus kam, als Idee ist das aber schonmal was.


    Dann müsstest du abfragen, wie viele bullets der Spieler abgeschossen hat, und abziehen vom Magazin.


    Das Magazin weniger setzen geht meines Wissens nach nicht.


    Hier vielleicht noch was Hilfreiches: http://forum.sa-mp.com/showthread.php?t=186926

    Den Befehl komplett solltest du schon selbst machen, aber hier siehst du das Prinzip welches auf deinen Anfang aufbaut:
    ocmd:admins(playerid,params[])
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(sInfo[i][alevel]>=0 && IsPlayerConnected(i))
    {
    printf("innerhalb der schleife %i",i);
    switch(sInfo[i][alevel])
    {
    case 0://User
    {
    format(str, sizeof(str), "ID %d ist User.", i);
    SendClientMessage(playerid,CL_GRAU,str);
    }
    case 1://VIP
    {
    format(str, sizeof(str), "ID %d ist VIP.", i);
    SendClientMessage(playerid,CL_GRAU,str);
    }
    case 2://Supporter
    {
    format(str, sizeof(str), "ID %d ist Supporter.", i);
    SendClientMessage(playerid,CL_GRAU,str);
    }
    case 3://Moderator
    {
    format(str, sizeof(str), "ID %d ist Moderator.", i);
    SendClientMessage(playerid,CL_GRAU,str);
    }


    }
    }
    printf("ausserhalb der bedingung %i",i);
    }
    printf("ausserhalb der schleife ");
    return 1;
    }


    Keine return's in der Schleife, wenn du bis an's Ende kommen willst.

    Gut, da das so anscheinend nicht funktioniert, da du nicht machst was man dir sagt, probieren wir es anders.


    Wie rufst du "PaydayTD(playerid)" und "Geldanzigen(playerid)" auf? Und unter welchem callback?

    Wie wäre es
    zu ändern und die textDraw's als PlayertextDraws zu erstellen?


    Das ändert rein gar nichts, das einzige ist, dass du das Textdraw keinem anderen Spieler anzeigen kannst, wenn du das aber sowieso nicht machst ist es egal.



    Lukas, poste den CODE dazu!
    Und irgendwas hast du mit den printf falsch gemacht, so viele wie das sind.

    Du hast keine printf erstellt beim Erstellen der Textdraws und bei ändern des Strings der Textdraws, das solltest du schon machen.


    Anschließend poste bitte den Code MIT den printf.



    Was genau passiert den? ID 0 sieht die Textdraws, und ID 1 sieht gar nichts? Oder einen Teil, oder was?

    Unter. OnPlayerConnect


    Seltsam. Möglicherweise liegt es gar nicht an dem Code, sondern an einem anderen Code.


    Weißt du was Debuggen ist? Debugge deinen Code mal folgendermaßen:


    if(GetPVarInt(playerid,"Einlogin") == 1)
    {
    printf("Textdraw wird ID %d angezeigt", playerid);
    TextDrawShowForPlayer(playerid,Textdraw0[playerid]);
    TextDrawShowForPlayer(playerid,Textdraw1[playerid]);
    TextDrawShowForPlayer(playerid,Textdraw2[playerid]);
    TextDrawShowForPlayer(playerid,Textdraw3[playerid]);
    }


    Dieses printf fügst du auch beim Erstellen der Textdraws ein, und dort wo du den string der Textdraws änderst ein.


    Änderst halt das "wird angezeigt" zu "wird erstellt" und "wird geändert" .



    Dann postest du den ganzen Code nochmal, so wie du ihn jetzt hast, und dann postest du was im Server Log steht, wenn die zwei Spieler in den Server kommen.

    if(PI[playerid][fraktion] != 1 && PI[playerid][fraktion] != 2 && PI[playerid][fraktion] != 14)
    Zu
    if(PI[playerid][fraktion] == 1 || PI[playerid][fraktion] == 2 || PI[playerid][fraktion] == 14)

    Nimm den "root" Benutzer ohne Passwort. Localhost solltest du nehmen, wenn die Datenbank auf dem gleichen Server liegt:


    #define MYSQL_HOST "127.0.0.1"
    #define MYSQL_USER "root"
    #define MYSQL_PASS ""
    #define MYSQL_DATA "DATENBANKNAME"


    Das ist in 99% aller Fälle standardmäßig so eingestellt.
    Dein user "samp" wird nicht die richtigen Berechtigungen haben, dass ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.
    Deshalb benutze, wie ich oben geschrieben habe, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben.