Beiträge von Kaliber

    for(new i; i != GetMaxPlayers(); i++)


    Anstatt MAX_PLAYERS kannst du auch folgendes machen:


    for(new i, l=GetMaxPlayers(); i<l; i++)


    Und, wenn es sich vermeiden lässt, deklariert man keine Variablen in Schleifen.


    Aber, du kannst sie einfach in den "Header" der Schleife packen und dann sieht das so aus:


    for(new i, l=GetMaxPlayers(),dName[MAX_PLAYER_NAME]; i<l; i++)//Schleife die alle Spieler durchgeht
    {
    if(!IsPlayerConnected(i))continue;//Wenn Spieler nicht Connected -> Continue
    //if(!IsPlayerAdmin(i))continue; <- Würde alle RCON-Admins anzeigen.
    GetPlayerName(i, dName, sizeof dName);//String mit Namen setzen
    format(string, sizeof string, "%s\n%s", string, dName);//String für den Dialog erweitern + nächsten Namen reinsetzen
    item[playerid][iItem] = i;//Listitem auf Playerid setzen
    iItem ++;//Listitem hochsetzen damit es das nächste ist
    }


    mfg. :thumbup:

    Ich hab nun den speed von allen punkten auf 50 gemacht jetzt sind zwei punkte langsam und einer schnell. woran liegt das?


    Weiß ich nicht...aber dann mach doch einen im leerlauf (bzw unsichtbar) und häng noch einen 3. hinten dran, dann müssten alle gleich schnell sein ^^


    Aber weiß nicht wieso das "spacken" sollte :S

    Ich bitte um Antwort


    Schau dir nochmal genau an was ich gemacht habe, ich speichere in d_Namen nicht die Spielernamen, sondern nur die IDs :)


    Les es dir doch durch, habe doch extra alles kommentiert ^^


    Du solltest in d_Namen ja Spielerids speichern, nämlich genau 4 Stück (und wirklich 4).


    Und naja in tmp steht dann der Spielernamen den du im Dialog anzeigen sollst ;)


    mfg. :thumbup:

    Schau:


    //Du machst oben in dein Skript:
    new d_Namen[4];


    //Dann weißt du der Variable die IDs von den Spielern zu, die du haben willst:
    d_Namen[0] = 5; //Also hier hätten wir jetzt Spielerid 5 mit drinnen..usw


    //Dann da wo du deinen Dialog anzeigen willst:
    for(new i,tmp[MAX_PLAYER_NAME]; i<sizeof d_Namen; i++) {
    GetPlayerName(d_Namen[i],tmp,MAX_PLAYER_NAME);
    //Hier formatierst du alles zu einem String und zeigst dann die Namen im Dialog an
    }


    //Und dann unter OnDialogResponse
    if(dialogid == DIALOG_TICKETS) {
    if(listitem >= sizeof d_Namen || !response) return 1;
    new tmp_id = d_Namen[listitem];
    if(!IsPlayerConnected(tmp_id))return SendClientMessage(playerid, HellRot, "...");
    if(!GetPVarInt(tmp_id, "JustReport"))return SendClientMessage(playerid, HellRot, "FEHLER:{FFFFFF} ...");
    if(tmp_id==playerid)return SendClientMessage(playerid, HellRot, "FEHLER:{FFFFFF} ...");
    }


    mfg. :thumbup:

    Nein NEin, das meine ich nicht. Ich meine den Schreibstyle. z.B mit den Klammern das man diese nicht in die nächste Zeile schreibt sondern direct neben z.B der Abfrage....
    Dies mach es meiner meinung nur unleserlich.


    Das hat immernoch nichts mit java zu tun...und ich finde es irgendwie besser...


    Kaliber
    Ich hab 3 punkte hintereinander bewegen lassen und das mit einer endlos schleife. Aber da gibt es ein Problem: ich hab bei allen drei punkten geschwindigkeit 5.0 eingetragen aber die bewegen sich manchmal unterschiedlich schnell


    Also, ich habe das gerade getestet, also bei mir funktioniert es einwandfrei und die beiden MapIcons sind zu 100% äquivalent :)


    Wie sieht denn dein Code aus (denn du brauchst eigentlich keine Endlosschleife ^^) ? :)


    mfg. :thumbup:

    Was ist ein callback?


    Also...du erstellst als erstes mit SetPlayerMapIcon das Icon für den Spieler.


    Dann fragst du irgendwann ab, ab wann es sich für den Spieler bewegen soll...da nutzt du dann:


    MovePlayerMapIcon...so und wenn das dann da an dem Ziel angekommen ist, wird folgendes aufgerufen:


    public OnPlayerMapIconMoved(playerid,iconid,Float:x,Float:y,Float:z) //Musst du bei dir iwo ins Skript halt schreiben
    {
    //Und hier prüftst du dann, ob der Spieler sich noch in der Nähe befindet...
    //Wenn ja dann setzt du mit SetPlayerMapIcon, das Icon wieder an die alte Positon und mit MovePlayerMapIcon...bewegst du es wieder dahin...
    }


    Sollte doch nicht soo schwer sein :rolleyes:


    mfg. :thumbup: