Beiträge von Salpoe

    Servus!


    Wollte den Spieler dazu bringen sich einzuloggen, falls seine IP-Adresse sich geändert hat. Trotz der selben IP-Adresse bekomme ich die selbe Meldung:


    if(udb_Exists(PlayerName2(playerid)))
    {
    new file[30];
    new tmp3[256];
    new ip[19];
    new Unknown[24], player1;
    GetPlayerName(player1,Unknown, sizeof(Unknown));
    if(dini_Int(file,ip) != GetPlayerIp(player1,tmp3,100))
    {
    new lstring[256];
    format(lstring,256,"Your IP Adress does not match with your Account, %s{FFFFFF} !\n\nPlease enter your password below:",pName(playerid));
    ShowPlayerDialog(playerid,DIALOGID+67,DIALOG_STYLE_INPUT,"Login",lstring,"Login","Leave");
    return 1;
    }
    }

    stock PlayYoutubeVideoForPlayer(playerid,url[])
    {
    if(strfind(url,"&") != -1) strmid(url,url,0,strfind(url,"&"),128);
    format(g_link,sizeof(g_link),"%s",url);
    format(url,128,"youtubeinmp3.com/fetch/?api=advanced&video=%s",g_link);
    HTTP(playerid, HTTP_GET, url, "", "OnYoutubeResponse");
    }

    Klappt Leider nicht so ganz, ich habe diesen Schnippsel vor langer Zeit irgendwoher genommen und überarbeitet. Wollte das ganze mit Dialogen und TextDraws gestalten.


    Erstmal OnGameModeInIt: Dies soll den Titel des YouTube Videos anzeigen, es zeigt aber garnichts an.


    new stringa[100];
    Textdraw16 = TextDrawCreate(270.000000, 439.000000, stringa);
    format (stringa, sizeof(stringa),"Title: %s",GetVideoTitle());
    TextDrawSetString(Textdraw16,stringa);
    TextDrawBackgroundColor(Textdraw16, 255);
    TextDrawFont(Textdraw16, 2);
    TextDrawLetterSize(Textdraw16, 0.140000, 0.700000);
    TextDrawColor(Textdraw16, -1);
    TextDrawSetOutline(Textdraw16, 0);
    TextDrawSetProportional(Textdraw16, 1);
    TextDrawSetShadow(Textdraw16, 1);


    dcmd_playyt(playerid,params[]) // **changed23
    {
    #pragma unused params
    new link[128];
    if (AccInfo[playerid][Level] >= 7)
    {
    format(link, sizeof(link),"Enter a valid Youtube Link below please.","Done","Abort");
    ShowPlayerDialog(playerid, DIALOG_YOUTUBE_INPUT, DIALOG_STYLE_INPUT,"Youtube Stream",link,"Done","Abort");
    return 1;
    }
    else return SendClientMessage(playerid,COLOR_GREY,"* You're not an Administrator to perform this command.");
    }


    if (dialogid == DIALOG_YOUTUBE_INPUT)
    {
    if (response)
    {
    new string[152], Titel[152], name[MAX_PLAYER_NAME];GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    for(new i = 0, j = GetMaxPlayers(); i < j; i++)
    PlayYoutubeVideoForPlayer(i,inputtext);
    format(string, sizeof(string),"* Admin %s (ID:%d) is now playing following song from YouTube: %s ", name, playerid, GetVideoTitle());
    MessageToAdmins(COLOR_ADMIN,string);
    format(Titel, sizeof(Titel),"%s",GetVideoTitle());
    TextDrawSetString(Textdraw17, string);
    TextDrawShowForAll(Textdraw17);
    format(Titel, sizeof(Titel),"*Test %s ", GetVideoTitle());
    TextDrawSetString(Textdraw16, Titel);
    TextDrawShowForAll(Textdraw16);
    }
    else return SendClientMessage(playerid, COLOR_GREY,"* Dialog closed.");
    }


    Warum wird mir der Titel nicht angezeigt? Oh, und dann noch der Fehler hier:


    dcmd_title(playerid,params[])
    {
    #pragma unused params
    if(!IsYouTubeVideoPlaying())
    {
    SendClientMessage(playerid,COLOR_GREY,"* No song is currently being played.");
    return 1;
    }
    new info[256];
    format(info,sizeof(info),"%s\n\nLenght: %d Seconds\n\nLink: %s",GetVideoTitle(),GetLengthOfVideo(),GetVideoLink());
    ShowPlayerDialog(playerid,DIALOG_SONGINFO,DIALOG_STYLE_MSGBOX,"Youtube - Song",info,"Got it","Close");
    return 1;
    }


    Jedes Mal, wenn ich /title eingebe dann bekomme ich die Meldung 'No song is currently being played', obwohl etwas abgespielt wird..

    formatSeconds(g_duration,hours1,minutes,seconds);
    GetPlayerName(playerid, admin, sizeof (admin));
    format(string,sizeof(string),"* DJ %s (ID:%d) is now playing %s. [%02d:%02d:%02d]",admin,playerid,GetVideoTitle(),hours1,minutes,seconds);
    SendClientMessageToAll(COLOR_ADMIN,string);
    KillTimer(SongTimer[playerid]);
    SongTimer[playerid] = SetTimerEx("SongDuration",25, 1, "i", playerid);


    format (stringa, sizeof (stringa), "%s", GetVideoTitle());
    TextDrawSetString(Textdraw16,stringa);
    TextDrawShowForPlayer(playerid, Textdraw16);


    new stringb[10];
    format (stringb, sizeof(stringb),"%02d:%02d I",minutes,seconds);
    TextDrawSetString(Textdraw15, stringb);
    TextDrawShowForPlayer(playerid, Textdraw15);


    Textdraw16 wird nicht angezeigt, warum? :s


    Hab sie alle bei OnGameModeInIt


    Edit: Außerdem läuft mein Timer viel zu schnell:


    public SongDuration(playerid)
    {
    sCount += 100;
    if (sCount == 1000)
    {
    sSecCount++;
    sCount = 0;
    }
    if (sSecCount == 60)
    {
    sMinCount++;
    sSecCount = 0;
    }


    edit: hab den timerbug gefixt, jedoch erscheint das textdraw immernoch nicht :S

    if (dialogid == DIALOG_YOUTUBE)
    {
    if (listitem == 0)
    {


    new ytstring[256];
    format(ytstring,256,"Youtube Streamer","Please enter a Youtube Link below.\n\nNOTE: Please enter a valid Youtube Link!");
    ShowPlayerDialog(playerid, DIALOG_YOUTUBE_INPUT, DIALOG_STYLE_INPUT,"Youtube Streamer",ytstring,"Alright","Close");
    format(ytstring, sizeof(ytstring), "http://unlimitedlikes.com/revzombie/play.php?q=yt:%s", inputtext);
    PlayAudioStreamForPlayer(playerid, ytstring);
    }
    //rest


    Der Link wird nicht abgespielt. :(

    if(udb_Exists(PlayerName2(playerid)))
    {
    new file[30];
    new tmp3[256];
    new ip[19];
    if(dini_Int(file,ip) != GetPlayerIp(playerid,tmp3,100))
    {
    new lstring[256];
    format(lstring,256,"Your IP Adress does not match with your Account, %s{FFFFFF} !\n\nPlease enter your password:",pName(playerid));
    ShowPlayerDialog(playerid,DIALOGID+67,DIALOG_STYLE_INPUT,"Login",lstring,"Login","Leave");
    return 1;
    }
    return 1;
    }
    return 1;
    }


    Ich möchte abfragen mit welcher IP der Spieler den Server betreten hat. Wenn es seine IP ist, also die IP mit der er sich immer eingeloggt hat, sollte er einfach den Skin auswählen und spielen können. Falls die IP mit seinen Stats nicht übereinstimmt, sollte er sein Passwort erneut eingeben. Nur leider funktioniert das Ganze irgendwie nicht.

    Echt super, dass ihr sowas kostenlos für mehrere User anbietet.
    Alles ist übersichtlich gestaltet und erklärt sich eigentlich von selbst. Der Support ist flott, richtig freundlich und kümmert sich um die User.


    Ich bedanke mich bei euch für eure tolle Arbeit!

    new file2[100],key[20];
    new name12[MAX_PLAYER_NAME], adminstring[128];
    format(file2,sizeof(file2),"/Data/Keys3/%s.sav",udb_encode(key));
    dini_Create("LuxAdmin/Keys3/Keys.txt");
    GetPlayerName(playerid,name12,sizeof(name12));
    format(adminstring,sizeof(adminstring),"* Administrator %s (ID:%d) has created a new VIP Premium Key.",name12, playerid);
    MessageToAdmins(COLOR_ADMIN, adminstring);
    new rstring[256];
    format(rstring,256,"key created: %s",inputtext);
    SendClientMessage(playerid,COLOR_GREY,rstring);


    Die Zahl wird aber nicht in der Datei gespeichert^^


    Edit an meinen Vorposter:


    Du definierst den höhsten Rank und fügst beim Ban Command folgendes hin:


    (AccInfo[Name][Adminlevel] != ServerInfo[MaxRank]))


    Natürlich musst du das an deinem Script anpassen..

    if(dialogid == DIALOG_ERSTELLEN)
    {
    if(!response)return 1;
    if(response)
    {
    new file2[100],key[20];
    new name12[MAX_PLAYER_NAME], adminstring[128];
    format(file2,sizeof(file2),"/Data/Keys2/%s.sav",udb_encode(key));
    dini_Set(file2,"KEY",inputtext);
    GetPlayerName(playerid,name12,sizeof(name12));
    format(adminstring,sizeof(adminstring),"* Administrator %s (ID:%d) has created a new VIP Premium Key.",name12, playerid);
    MessageToAdmins(COLOR_ADMIN, adminstring);
    new rstring[256];
    format(rstring,256,"key created: %s",inputtext);
    SendClientMessage(playerid,COLOR_GREY,rstring);


    Die Datei wird nicht erstellt?

    Guten Abend Community.


    Ich wollte einen Befehl erstellen, mit dem ich meinen Wagen mit einer Taste in die entsprechende Richtung beschleunigen kann. Ich habe einen kleinen Ansatz und Hintergedanken gefunden, komme jedoch nicht weiter.
    Ich habe mir vorgestellt, die Geschwindigkeit selbst zu bestimmen:


    dcmd_speed(playerid,params[])
    {
    new Float:x, Float:y, Float:z, SpeedValue;
    if(sscanf(params, "f", SpeedValue)) return SendClientMessage(playerid, COLOR_GREY,"* usage: /speed <value>");
    SetVehicleVelocity(GetPlayerVehicleID(playerid), x*SpeedValue, y*SpeedValue, z*SpeedValue);
    return 1;
    }


    Und dann unter OnPlayerKeyStateChange den Wert wieder irgendwie abrufen


    if (newkeys == KEY_WALK)
    {
    if (!IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid, COLOR_GREY,"*you've to be in a vehicle to speed up.");
    return 1;
    }
    else
    {
    // ????
    }
    }


    return 1;
    }


    Ich denke ich habe den Ansatz soweit richtig. Ich weiß aber nicht wie ich den Wert vom Befehl abrufe um ihn dann unten bei OnPlayerKeyStateChange wieder einfüge.
    Meine Idee war folgende, welche oben bei "// ????" in Frage käme:


    new Float:Velocity[3], SpeedValue;
    GetVehicleVelocity(GetPlayerVehicleID(playerid), Velocity[0], Velocity[1], Velocity[2]);
    SetVehicleVelocity(GetPlayerVehicleID(playerid), Velocity[0]*SpeedValue, Velocity[1]*SpeedValue, Velocity[2]*SpeedValue);


    Es funktioniert aber nicht.^^


    Edit: Hat keiner eine Idee?!
    Mfg.


    Dein Quellcode ist trotzdem kompletter Murks. Unperformant, unstrukturiert und verbuggt. Ich empfehle dir die Tipps im Thread wahrzunehmen.


    Murks ist es nicht. Ich bin überhaupt froh, dass ich es erstmal so weit geschafft habe. Nur weil es nicht so aussieht wie du es gerne haben möchtest, heißt es nicht dass es gleich Murks ist.
    Da ich ein Anfänger bin, halte ich es für in Ordnung. Und verbuggt ist es nicht mehr.

    Ich sagte ja, der Befehl sieht immernoch genauso aus.


    if(strcmp(cmdtext, "/gz", true) == 0)
    {
    if (AccInfo[playerid][Level] <= 1)
    return SendClientMessage (playerid, COLOR_GREY, "* You are not an Administrator to perform this command.");


    new params[7], 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);
    //rest

    Ich habe deine Verbesserungen befolgt und den Befehl teilweise verbessert.


    Der Befehl wie ich ihn oben habe funktioniert aber trotzdem nicht um ihn ingame zu testen, was habe ich falsch gemacht?


    Keiner ne Idee? :S

    new Text:Textdraw2[MAX_PLAYERS] = {Text:-1,...};


    public OnGameModeInit()
    {
    new tdstring[7];
    Textdraw2[playerid]= TextDrawCreate(117.000000, 338.000000, tdstring); //error 017: undefined symbol "playerid"
    TextDrawBackgroundColor(Textdraw2[playerid], 255); //error 017: undefined symbol "playerid"
    TextDrawFont(Textdraw2[playerid], 2); //error 017: undefined symbol "playerid"
    TextDrawLetterSize(Textdraw2[playerid], 0.290000, 1.200000); //error 017: undefined symbol "playerid"
    TextDrawColor(Textdraw2[playerid], -1); //error 017: undefined symbol "playerid"
    TextDrawSetOutline(Textdraw2[playerid], 0); //error 017: undefined symbol "playerid"
    TextDrawSetProportional(Textdraw2[playerid], 1); //error 017: undefined symbol "playerid"
    TextDrawSetShadow(Textdraw2[playerid], 1); //error 017: undefined symbol "playerid"
    Lasse ich das [playerid] so bekomme ich den "error 035: argument type mismatch (argument 1)" Error.


    Hab den Befehl nun unter OnPlayerCommandText plaziert.


    Edit: Habs hinbekommen. Nun funktioniert der Befehl aber nicht mehr.


    if(strcmp(cmdtext, "/gz", true) == 0)
    {
    if (AccInfo[playerid][Level] <= 1)
    return SendClientMessage (playerid, COLOR_GREY, "* You are not an Administrator to perform this command.");


    new params[7], 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);