Beiträge von Addickted

    Die Errorzeile gibt an das die Parameter nicht richtig angegeben wurden.


    Die Funktion heisst übersetzt "IstSpielerInReichweiteEinesPunktes", du hast zwar die Koordinaten angegeben, aber nicht die Reichweite, sprich den Radius um die Koordinate herum.


    Richtig heisst deine Abfrage also:


    if(IsPlayerInRangeOfPoint(playerid,3.0,1214.0985,-904.3343,42.9216))


    3.0 ist der Radius.

    Ist auch logisch weil die Funktion anders geschrieben wird. Sie wird "IsPlayerInRangeOfPoint" geschrieben. Falls es noch nie jemanden aufgefallen ist, dass Wörter in Pawn zwar aneinandergereiht, aber groß geschrieben werden, z.B. SendClientMessage ;)

    Habe das mit dem Timer nun draussen, aber mal eine andere Frage zum selben System. Ich möchte Tickets am Automaten und im Bus (Modelid 431) kaufen können. Dazu habe ich diese Abfrage verändert. An den Koordinaten kann man kaufen, jedoch nicht im Bus. Wieso?


    ocmd:ticketkaufen(playerid,params[])
    {
    if(GetVehicleModel(vehicleid) == 431 || IsPlayerInRangeOfPoint(playerid,3.0,1436.5356,2656.1499,11.3926) || IsPlayerInRangeOfPoint(playerid,3.0,2840.6609,1276.1277,11.3906) || IsPlayerInRangeOfPoint(playerid,3.0,2840.5479,1304.0836,11.3906) || IsPlayerInRangeOfPoint(playerid,3.0,2856.7517,1314.5154,11.3906) || IsPlayerInRangeOfPoint(playerid,3.0,2857.1738,1266.7858,11.3906))
    {
    TicketGekauft=true;
    GivePlayerMoney(playerid,-TICKETPREIS);
    SendClientMessage(playerid,COLOR_GREEN, "Du hast dir für 5$ ein Ticket der SATS gekauft");
    GameTextForPlayer(playerid,"~y~-~r~5$",6000,1);
    return 1;
    }
    return 1;
    }


    //E: Hat sich erledigt, ich habe trotteligerweise vergessen die Vehicleid mir zu besorgen. :rolleyes:

    Mit dem Timer funktionierts nun, okay dann ist man eine Erfahrung reicher. :D Welche Möglichkeiten fallen euch sonst noch ein?



    Hab den Timer als MAX_PLAYERS Variable erstellt, ginge das auch oder wozu die Schleife an der Stelle?

    Der Gametext wird nicht angezeigt, obwohl ich direkt da stehe.


    @Tommy: Muss ein Timer unbedingt nötig sein bei einem Public? Ich hätte gedacht das geht auch ohne. Mal angenommen das stimmt, dass wäre dann ja sicherlich nicht Resourcenschonend oder? :S

    Hallo Leute ich komme hier nicht weiter, wünsche mir das mir jemand kurz hilft :)


    Ich habs mit IsPlayerInRangeOfPoint und der Funktion PlayerToPoint ausprobiert. Beides geht nicht.


    Hier der Code:


    public Tickets(playerid)
    {
    if(PlayerToPoint(1.0,playerid, 1436.5356,2656.1499,11.3926) || (playerid,1.0,2840.6609,1276.1277,11.3906) || (playerid,1.0,2840.5479,1304.0836,11.3906) || (playerid,1.0,2856.7517,1314.5154,11.3906) || (playerid,1.0,2857.1738,1266.7858,11.3906))
    {
    GameTextForPlayer(playerid, "~w~/~r~ticketkaufen", 3000, 4);
    }
    return 1;
    }

    Der Server muss FTP Zugang haben, die Zugangsdaten wirst du ja wohl besitzen. Auf diesen loggst du dich mit einem FTP Client (z.B. WinScp) ein und lädtst die Dateien hoch.
    Die SErverdateien erhälst du hier(http://www.sa-mp.com/download.php), je nachdem ob du einen Windows oder Linux Server hast, musst du ein anderes Paket herunterladen.


    Ausserdem benötigst du einen Gamemode. Samp hat vorab fertige Gamemodes integriert. Selbst erstellte sind, wie man sich vorstellen, aber halt um einiges toller.

    Ich wollte mir einen Gametext anzeigen lassen, sobald man in der nähe folgender Koordinaten ist. Passiert allerdings gerade gar nichts. Liegt das am Public?


    public Tickets(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid, 1.0, 1436.5356,2656.1499,11.3926) || (playerid,1.0,2840.6609,1276.1277,11.3906) || (playerid,1.0,2840.5479,1304.0836,11.3906) || (playerid,1.0,2856.7517,1314.5154,11.3906) || (playerid,1.0,2857.1738,1266.7858,11.3906))
    {
    GameTextForPlayer(playerid, "~w~/~r~ticketkaufen", 3000, 4);
    }
    return 1;
    }

    if(pickupid == ADACSymbol)
    {
    new pName[MAX_PLAYER_NAME], save[28],santow;
    GetPlayerName(playerid,pName,sizeof(pName));
    format(save,sizeof(save),"/Spieler/%s.ini",pName);
    if(dini_Exists(save))
    {
    sInfo[playerid][job] = dini_Int(save,"job");
    if(sInfo[playerid][job] == 3 && OnDuty[playerid] == 0)
    {
    santow = SetTimerEx("SanTow", 10000, true, "i", playerid);
    Color[playerid] = GetPlayerColor(playerid);
    SkinSave[playerid] = GetPlayerSkin(playerid);
    SetPlayerSkin(playerid, 50);
    SetPlayerColor(playerid, COLOR_ORANGE);
    SendClientMessage(playerid, COLOR_ORANGE, "Willkommen im Dienst als Pannenhelfer!");
    OnDuty[playerid] = 1;
    }
    else if(OnDuty[playerid] == 1)
    {
    SetPlayerSkin(playerid, SkinSave[playerid]);
    SetPlayerColor(playerid, Color[playerid]);
    SendClientMessage(playerid, COLOR_ORANGE, "Dienst als Pannenhelfer beendet!");
    OnDuty[playerid] = 0;
    KillTimer(santow);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Info: Du musst dich erst als Pannenhelfer bewerben.");
    }
    }
    return 1;
    }


    Der Titel sagt alles, ich gehe in Job und der Timer startet, allerdings wird er nicht beendet. Wo hab ich da einen Logikfehler? ^^

    Dann setze den Intervall auf 60000.


    Ich habs sogar noch höher eingestellt und es geht nicht. Ich habe das ganze in die Userdatei schreiben lassen, da stand eben ein Wert von 451 drin. Das haut nicht ganz hin.


    //E: Kp warum es eben auf 451 stand, aber der Timer scheint nun richtig zu laufen. Nun meine letzte Frage und zwar mal angenommen der Timer zählt seine Millisekunden und irgendwann beendet eine Person das Spiel. Wie kann ich an der Stelle des Disconnects, die Zeit Zwischenspeichern in Dini. Also ich weiss zwar wie man speichert, aber ich weiss immernoch nicht wie ich den Timer auslesen lassen könnte. Ich hoffe es versteht jemand was ich meine :D

    Das klappt nun mit dem Timer, allerdings ist der Timer extrem schnell. Trotzdem ich ihn auf eine Stunde nun gestellt habe, läuft er so schnell, dass mein Score beim Spawn schon 451 betrug.

    Ich sobald der GM lädt, aber der Timer ist auf Wiederholung eingestellt, also sollte ich ja was davon mitbekommen. Kann man einen Timer irgendwie auslesen lassen bei welcher Sekunde er grad ist und diese sendet in einer SendClientMessage oder via printf? Wüsste sonst grad keine Lösung.