Es könnte so gehen,
Du fragst ab ob der Spieler in einer Bestimmten Reichweite von einem Punkt ist.
Das geht ja wie wir alle wissen so:
if(IsPlayerInRangeOfPoint(playerid,range,Float:X,Float:Y,Float:Z)
{
//Do Something here
}
Wenn dies geschiet, kannst du die Zeit wohl mit SetPlayerTime ändern
Link zum Wiki
Als Beispiel kann man das schon Standart vorhandene Filterscript gl_realtime benutzen.!
//
// Keeps the in game time synced to the server's time and
// draws the current time on the player's hud using a textdraw/
// (1 minute = 1 minute real world time)
//
// Kye 2009
#include <a_samp>
#pragma tabsize 0
//--------------------------------------------------
new Text:txtTimeDisp;
new hour, minute;
new timestr[32];
forward UpdateTime();
//--------------------------------------------------
public UpdateTime()
{
gettime(hour, minute);
format(timestr,32,"d:d",hour,minute);
TextDrawSetString(txtTimeDisp,timestr);
SetWorldTime(hour);
new x=0;
while(x!=MAX_PLAYERS) {
if(IsPlayerConnected(x) && GetPlayerState(x) != PLAYER_STATE_NONE) {
SetPlayerTime(x,hour,minute); // Das wäre die Realtime ! Diese am besten in der Hauptstadt verwenden
}
x++;
}
}
//--------------------------------------------------
public OnGameModeInit()
{
// Init our text display
txtTimeDisp = TextDrawCreate(605.0,25.0,"00:00");
TextDrawUseBox(txtTimeDisp, 0);
TextDrawFont(txtTimeDisp, 3);
TextDrawSetShadow(txtTimeDisp,0); // no shadow
TextDrawSetOutline(txtTimeDisp,2); // thickness 1
TextDrawBackgroundColor(txtTimeDisp,0x000000FF);
TextDrawColor(txtTimeDisp,0xFFFFFFFF);
TextDrawAlignment(txtTimeDisp,3);
TextDrawLetterSize(txtTimeDisp,0.5,1.5);
UpdateTime();
SetTimer("UpdateTime",1000 * 60,1);
return 1;
}
//--------------------------------------------------
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid,txtTimeDisp);
gettime(hour, minute);
SetPlayerTime(playerid,hour,minute);
return 1;
}
//--------------------------------------------------
public OnPlayerDeath(playerid, killerid, reason)
{
TextDrawHideForPlayer(playerid,txtTimeDisp);
return 1;
}
//--------------------------------------------------
public OnPlayerConnect(playerid)
{
gettime(hour, minute);
SetPlayerTime(playerid,hour,minute);
return 1;
}
//--
Und nun kann man im Timer der Schon vorhanden ist (public UpdateTime())
Abfragen ob der Spieler sich halt in der Nähe eines Punktes befindet.
also:
public UpdateTime()
public UpdateTime()
{
gettime(hour, minute);
format(timestr,32,"%02d:%02d",hour,minute);
TextDrawSetString(txtTimeDisp,timestr);
SetWorldTime(hour);
new x=0;
while(x!=MAX_PLAYERS) {
if(IsPlayerConnected(x) && GetPlayerState(x) != PLAYER_STATE_NONE) {
if(IsPlayerInRangeOfPoint(playerid,Float:Range,Float:X,Float:Y,Float:Z)// Bitte die Floats durch deine Ersetzen!
{
SetPlayerTime(x,hour,minute); // Das wäre die Realtime ! Diese am besten in der Hauptstadt verwenden
}
else if(IsPlayerInRangeOfPoint(playerid,Float:Range,Float:X,Float:Y,Float:Z)// Bitte die Floats durch deine Ersetzen!
{
SetPlayerTime(x,hour -= 1,minute); // Hier wird in einer anderen "Posotion" gesagt, dass es eine Stunde Unterschied gibt.
}
if(IsPlayerInRangeOfPoint(playerid,Float:Range,Float:X,Float:Y,Float:Z)// Bitte die Floats durch deine Ersetzen!
{
SetPlayerTime(x,hour -= 2,minute); // Hier wird die Zeit um 2 Stunden nach hinten versetzt!
}
}
x++;
}
}
Bitte die Floats durch eigene ersetzen!
Ist ungetestet, weiss nicht ob es so geht, bin ja noch anfänger xD
EDIT: Versteckten Text direkt sichtbar gemacht