Beiträge von Salpoe

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[30], parameter[128];
    sscanf(cmdtext, "ss", cmd, parameter);

    if(strcmp(cmd, "/befehl", true) == 0)
    {
    sscanf(parameter, "ddd", variablen);
    }

    return 0;
    }


    So ists korrekt, denk ich mal..

    Guten Morgen Community,


    Ich habe das Problem, dass das Textdraw was ich erstellt habe sich nicht löscht, wenn ich es zweimal innerhalb des Timers [1500s] mit einem Befehl einblenden lasse.
    Wenn ich den /gz Befehl eingebe, erscheint das Textdraw. Wenn das Textdraw verschwunden ist, kann ich wieder den /gz Befehl nutzen und das Textdraw erscheint erneut problemlos.


    dcmd_gz(playerid,params[])
    {
    if (AccInfo[playerid][Level] <= 1)
    return SendClientMessage (playerid, COLOR_GREY, "* You are not an Administrator to perform this command.");

    new Float:x,Float:y,Float:z, Float:zz;
    if(sscanf(params, "f",zz)) return SendClientMessage(playerid, COLOR_GREY, "* Usage: /gz [Meters in Z Direction") && SendClientMessage(playerid, COLOR_GREY,"* Function: Moves you in the specified Z - Direction.");
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z+zz);


    if (Float:zz >= 0)
    {
    new tdstring[7];
    TextDrawShowForPlayer(playerid, Textdraw2);
    Textdraw2 = TextDrawCreate(117.000000, 338.000000, tdstring);
    format(tdstring, sizeof(tdstring), "Z %.2f ", zz);
    TextDrawBackgroundColor(Textdraw2, 255);
    TextDrawFont(Textdraw2, 2);
    TextDrawLetterSize(Textdraw2, 0.290000, 1.200000);
    TextDrawColor(Textdraw2, -1);
    TextDrawSetOutline(Textdraw2, 0);
    TextDrawSetProportional(Textdraw2, 1);
    TextDrawSetShadow(Textdraw2, 1);
    TextDrawSetString(Textdraw2, tdstring);
    TextDrawShowForPlayer(playerid, Textdraw2);
    SetTimerEx("DisableTextDraw2", 1500, false, "i", playerid);
    }


    if (Float:zz <= 0)
    {
    new tdstring[7];
    TextDrawShowForPlayer(playerid, Textdraw2);
    Textdraw2 = TextDrawCreate(117.000000, 338.000000, tdstring);
    format(tdstring, sizeof(tdstring), "Z %.2f ", zz);
    TextDrawBackgroundColor(Textdraw2, 255);
    TextDrawFont(Textdraw2, 2);
    TextDrawLetterSize(Textdraw2, 0.290000, 1.200000);
    TextDrawColor(Textdraw2, -1);
    TextDrawSetOutline(Textdraw2, 0);
    TextDrawSetProportional(Textdraw2, 1);
    TextDrawSetShadow(Textdraw2, 1);
    TextDrawSetString(Textdraw2, tdstring);
    TextDrawShowForPlayer(playerid, Textdraw2);
    SetTimerEx("DisableTextDraw2", 1500, false, "i", playerid);
    }
    return 1;
    }


    forward DisableTextDraw2(playerid);


    public DisableTextDraw2(playerid)
    {
    new tdstring[7];
    TextDrawDestroy(Textdraw2);
    TextDrawHideForPlayer(playerid, Textdraw2);
    Textdraw2 = TextDrawCreate(117.000000, 338.000000, tdstring);
    return 1;
    }


    Mfg Salpoe :P

    dcmd_gotoz(playerid,params[])
    {
    if (AccInfo[playerid][Level] < 1)
    return SendClientMessage (playerid, COLOR_RED, "* You are not an Administrator to perform this command.");


    new Float:x,Float:y,Float:z;
    new zAmount;
    if(sscanf(params, "f",zAmount)) return SendClientMessage(playerid, COLOR_GREY, "* Usage: /gotoz [Z]");
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z+zAmount);
    return 1;
    }


    Ich crashe bei dem Befehl :s

    dcmd_admins(playerid,params[])
    {
    #pragma unused params
    new string[400] = "{FFFFFF} Following Admins are available:\n\n";
    new NameR[20];
    new string2[120];

    for(new i; i < MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !AccInfo[i][Level] || AccInfo[i][Hide]) continue;
    format(string, sizeof string, "%s {FFFFFF}Admin %s (ID:%i) - {0098D3}Level %d{FFFFFF}\n",string,PlayerName2(i),i, AccInfo[i][Level]);
    }
    if(strlen(string) == 40) return ShowPlayerDialog(playerid,NO_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins","\nThere are currently no Admins available.","Close","");
    ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins",string,"Close","");

    GetPlayerName(playerid, NameR, sizeof(NameR));
    format(string2,sizeof(string2),"* %s (ID:%d) has checked all available Admins.",NameR,playerid);
    MessageToAdmins(COLOR_MAUVE, string2);
    return 1;
    }

    dcmd_admins(playerid,params[])
    {
    #pragma unused params
    new string[128];
    for(new i; i < MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !AccInfo[i][Level] || AccInfo[i][Hide]) continue;
    format(string, sizeof string, "%sAdmin %s (ID:%i)- {0098D3}Level %d{FFFFFF}\n",string,PlayerName2(i),i, AccInfo[i][Level]);
    }
    if(!string[0]) return ShowPlayerDialog(playerid,NO_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins","\n\nThere are no admins\ncurrently available.","Close","");
    return ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins",string,"Close","");
    }


    Wie lasse ich einen Text über den String anzeigen? Beispielsweise "Following Admins are currently online:\n" und das nur einmal anstatt bei jedem Admin der online ist?
    Habe ziemlich alles ausprobiert und bekomme dabei nie das raus, was ich eigentlich haben will :s

    ..code..code
    format(string, sizeof(string2), " Last Login: %s | Register Date: %s | Todays Date: %d.%d.%d\n",tmp2,RegisterDatum,tag,monat,jahr);
    ShowPlayerDialog(playerid,DIALOG_TRACK,DIALOG_STYLE_MSGBOX,"Statistics",string2,"Close","");

    if(IsPlayerInAnyVehicle(player1))
    {
    new Float:VHealth, carid = GetPlayerVehicleID(playerid);
    GetVehicleHealth(carid,VHealth);

    format(string, sizeof(string2),"\nVehicle Name: %s | Model ID: %d | Vehicle ID: %d | Vehicle Health: %d\n",VehicleNames[GetVehicleModel(carid)-400],GetVehicleModel(carid),carid,floatround(VHealth)), strcat(string2,string), ShowPlayerDialog(playerid,DIALOG_TRACK2,DIALOG_STYLE_MSGBOX,"Statistics",string2,"Close","");
    }


    Der eigentliche Stats Dialog funktioniert wunderbar. Nun wollte ich abfragen, ob der Spieler in einem Fahrzeug sitzt und seine Informationen zum Wagen abfragen.
    Dies funktioniert aber jedoch nur, wenn ich meine eigene /stats ID verwende. Bei anderen Spielern (ID's die ich in /stats verwende) wird mir der Fahrzeug Part nicht angezeigt und ich bekomme die Meldung Unknown CMD, während der vorherige Part angezeigt wird.


    Mfg Salpoe

    enum PlayerData
    {
    Color,
    }


    OnPlayerConnect sowie bei Disconnect:
    AccInfo[playerid][Color] = 0;


    Bei dem Registrieren Command:
    dUserSetINT(PlayerName2(playerid)).("Color",0);


    Bei dem forward LoginPlayer sowie bei dem forward SavePlayerStats
    AccInfo[playerid][Color] = (dUserINT(PlayerName2(playerid)).("Color"));


    edit: Keiner ne idee? :S

    if(strcmp(cmdtext,"/yellow",true) == 0)
    {
    if (AccInfo[playerid][Registered] == 1)
    {
    SetPlayerColor(playerid, yellow);
    SendClientMessage(playerid, COLOR_GREY,"* Hint: You can view a List of all available colors by typing /colors");
    dUserSetINT(PlayerName2(playerid)).("Color",Color); // : warning 213: tag mismatch
    return 1;
    }
    }


    Möchte die Spielerfarbe abspeichern, so dass wenn sie den Server das nächste mal betreten wieder die selbe Farbe haben. Habe ein Warning und weiß nicht ob ich den Ansatz richtig gemacht habe.
    mfg

    SetCameraBehindPlayer(playerid);
    Damit sollte es gehen.


    Mit SpawnPlayer geht es ebenfalls.


    Habe nun ein anderes Problem:


    if(killerid != INVALID_PLAYER_ID)
    {
    SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    GivePlayerMoney(killerid, GetPlayerMoney (killerid) + 3500);
    }
    return 1;
    }


    Nach dem ersten Kill bekomme ich 3500, dann 9000, dann 24500 ? :s

    Ich habe beim Registersystem InterpolateCamera verwendet.


    Wenn ich nun den Registervorgang abgeschlossen habe, spawne ich im Hintergrund und kann mich dann auf der Minikarte laufen sehen, während die Interpolate Camera stehen geblieben ist und nicht weggeht bis ich /kill eingebe. Wie lasse ich die Camera verschwinden nach dem letzten Dialog?


    Edit: Habs mit SpawnPlayer(playerid); hinbekommen.