SA-MP Forums Archive
время на сервере - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: время на сервере (/showthread.php?tid=169701)



время на сервере - f0rtex - 20.08.2010

помогите сделать чтобы на сервере было 1 минута - 1 секунда, тоесть 24 минуты ( 24 часа ) вот код:
Quote:

#include <a_samp>
#include <time>

forward ClockSync(playerid);
new Text:Clock;

public OnFilterScriptInit()
{
Clock = TextDrawCreate(547.000000,24.000000,"00:00");
TextDrawAlignment(Clock,0);
TextDrawBackgroundColor(Clock,0x000000ff);
TextDrawFont(Clock,3);
TextDrawLetterSize(Clock,0.6,1.9);
TextDrawColor(Clock,0xffffffff);
TextDrawSetOutline(Clock,2);
TextDrawSetProportional(Clock,1);
TextDrawSetShadow(Clock,1);
SetTimer("ClockSync", 1000, 1);
}

public OnFilterScriptExit()
{
return 1;
}


public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid,Clock);
return 1;
}

public OnPlayerConnect(playerid)
{
return 1;
}


public ClockSync(playerid)
{
new string[256];
new hour, minute, second;
gettime(hour,minute,second);
if(hour < 10 && minute < 10)
{
format(string, sizeof(string), "0%d:0%d", hour, minute);
}
else if(hour < 10 && minute > 9)
{
format(string, sizeof(string), "0%d:%d", hour, minute);
}
else if(hour > 9 && minute < 10)
{
format(string, sizeof(string), "%d:0%d", hour, minute);
}
else
{
format(string, sizeof(string), "%d:%d", hour, minute);
}
TextDrawSetString(Text:Clock, string);
SetWorldTime(hour);
}




Re: время на сервере - MX_Master - 20.08.2010

вместо этого можно заюзать https://sampwiki.blast.hk/wiki/TogglePlayerClock и это https://sampwiki.blast.hk/wiki/SetPlayerTime, синхр.. там даже пример есть..


Re: время на сервере - enfall - 20.08.2010

pawn Code:
#include <a_samp>

forward ClockSync(playerid);
new Text:Clock;
new chour, cmin;

public OnFilterScriptInit()
{
  Clock = TextDrawCreate(547.000000,24.000000,"00:00");
  TextDrawAlignment(Clock,0);
  TextDrawBackgroundColor(Clock,0x000000ff);
  TextDrawFont(Clock,3);
  TextDrawLetterSize(Clock,0.6,1.9);
  TextDrawColor(Clock,0xffffffff);
  TextDrawSetOutline(Clock,2);
  TextDrawSetProportional(Clock,1);
  TextDrawSetShadow(Clock,1);
  SetTimer("ClockSync", 1000, 1);
}

public OnPlayerSpawn(playerid)
{
  TextDrawShowForPlayer(playerid,Clock);
  return 1;
}

public OnPlayerDeath(playerid)
{
  TextDrawHideForPlayer(playerid,Clock);
  return 1;
}

public ClockSync(playerid)
{
  new string[64];

  if(cmin == 59)
  {
    cmin = 0;
    if(chour == 23) chour = 0;
    else chour++;
  }
  else cmin++;

  for(new i=0; i<GetMaxPlayers(); i++) if(GetPlayerState(i) != PLAYER_STATE_NONE && IsPlayerConnected(i)) SetPlayerTime(i,chour,cmin);

  format(string, 64, "%02d:%02d", chour, cmin);
  TextDrawSetString(Text:Clock, string);
  SetWorldTime(chour);
}
Попробуй как-то так.


Re: время на сервере - ZaR - 20.08.2010

1. SetWorldTime ставит только параметр у worldtime в браузере
2. SetTimer выполняется не раз в секунду, а с большой погрешностью


Re: время на сервере - f0rtex - 20.08.2010

Спасибо большое


Re: время на сервере - ZiGGi - 20.08.2010

Quote:
Originally Posted by ZaR
View Post
2. SetTimer выполняется не раз в секунду, а с большой погрешностью
а размер погрешности зависит от скорости выполнения функции


Re: время на сервере - MX_Master - 20.08.2010

вощем-то и не надо чтоп таймер отмерял точно для этой задачи, главное чтоп примерно у всех показывало одинаково время, когда юзаем таймер. Ну например, каждую минуткуу подправлять время для каждого онлайн игрока стандартной функцией (писал выше)


Re: время на сервере - Фархад - 07.10.2010

У меня проблема та же , хочу время 1 сек = 1 минута)


Re: время на сервере - [CripZ]SERCH - 08.10.2010

Есть много FS предоставляющих эту функцию ..
offtop:
оО фортекс ты снова взялся за pawno?