Skripta koju koristim: Athlone
Detaljan opis problema: Svaki pun sat odnosno svaki payday server ubode na par sekundi.. Nzm do cega je i gledam funkciju synctime koja se obnavlja na svaki 1 min ili ti 60000 (tj ponavlja).. Uradio sam za svaki deo print i kasni uvek posle "Imanje Stalks Check Zavrsen" tj tamo gde treba da ispise tu poruku hvala sto igrate na servu i tako to.. ostale provere idu brzo (pratio sam server.exe) gledao sam ostale taskove (da tako kazem) i svugde je pogresno vreme napisano.. Ako neko zna vise o ovome nek pomaze :D NAPOMENA: Ovaj print za dynamic weather tek trebam testati.. i pogledajte ovo za petnaest minuta tajmer.. koliko ja znam to je 300000 a ne 420000 kao sto je pisalo :D
EDIT: U DynamicWeather nema sta da baga ali okacicu. Jedino sto se moglo promeniti je ovo sa if za zimski mod tj moglo je i na drugaciji nacin ali ja ovde ovako ne vidim nikakav propust..
Dio skripte:
[pawn]
task SyncTime[60000]()
{
new tmphour,
tmpminute,
tmpsecond,
year,
month,
day;
//stringicc[ 30 ];
getdate( year, month, day );
gettimeEx( tmphour, tmpminute, tmpsecond );
FixHour( tmphour );
tmphour = shifthour;
//format( stringicc, sizeof( stringicc ), "%s%d:%s%d:%s%d~n~~w~%d/%d/%d", (tmphour < 10) ? ("0") : (""), tmphour, (tmpminute < 10) ? ("0") : (""), tmpminute, (tmpsecond < 10) ? ("0") : (""), tmpsecond, day, month, year );
//TextDrawSetString( ATHLINIJA[ 5 ], stringicc );
printf("ATM Sistem");
for( new i = 1; i < MAX_ATM; i++ ) {
if( atmInfo[ i ][ atmExists ] == true ) {
if( atmInfo[ i ][ atmVremeDoRoba ] != 0 ) {
atmInfo[ i ][ atmVremeDoRoba ]--;
if( atmInfo[ i ][ atmVremeDoRoba ] == 0 ) {
atmInfo[ i ][ atmPreseceneZice ] = false;
atmInfo[ i ][ atmProbijenBios ] = false;
}
}
}
}
printf("ATM Zavrsen");
printf("Gang Zone Sistem");
for( new i = 1; i < MAX_GZONE; i++ ) {
if( gZoneInfo[ i ][ gZoneTime ] != 0 ) {
gZoneInfo[ i ][ gZoneTime ]--;
}
}
printf("Gang Zone Sistem Zavrsen");
if( VremeZatvaranjaCelija > -1 ) {
VremeZatvaranjaCelija--;
if( VremeZatvaranjaCelija == 0 ) {
UpravljanjeCelijama( false );
}
}
printf("Respawn Car Sistem");
if( tmpminute == 30 || tmpminute == 0 ) {
SetTimer( "RespawnCallGlobal", 60000, false );
SCMA( 0x86C6DBAA, "[RESPAWN] Server je automatski aktivirao respawn svih vozila!" );
SCMA( 0x86C6DBAA, "[RESPAWN] Respawn ce biti pokrenut za 1 minut." );
}
printf("Respawn Car Sistem Zavrsen");
printf("Imanje Stalks Check");
if( tmpminute == 45 ) {
SetTimerEx( "StalksCheck", 10, false, "d", 0 );
}
printf("Imanje Stalks Check Zavrsen");
if( ( tmphour > ghour ) || ( tmphour == 0 && ghour == 23 ) ) {
format( globalstring, sizeof( globalstring ), "Hvala Vam sto igrate na Athlone Community, trenutno je "col_yelow"%d:00 sati", tmphour );
OOCNews( BELA, globalstring );
ghour = tmphour;
if( tmphour == 21 ) {
SetWeather( 10 );
}
if( realtime ) {
SetWorldTime( tmphour );
ServerInfo[ VremeInGame ] = tmphour;
}
printf("Dinamicno vreme start");
DinamicWeather( );
printf("Dinamicno vreme finish");
printf("Gang Zone sistem 2");
for( new i = 1; i < MAX_GZONE; i++ ) {
if( gZoneInfo[ i ][ gZoneGangID ] != -1 ) {
OI[ gZoneInfo[ i ][ gZoneGangID ] ][ oSafeMoney ] += 200;
SaveOrganization( gZoneInfo[ i ][ gZoneGangID ] );
}
}
printf("Gang Zone sistem 2 Zavrsen");
UpravljanjeCelijama( true );
VremeZatvaranjaCelija = 10;
printf("Lotto sistem zapocet");
SetTimerEx( "IzvlacenjeKuglica", 3000, false, "d", 1 );
printf("Lotto sistem zavrsen");
printf("Drop gun sistem zapocet");
for( new f = 0; f < MAX_GOBJ; f++ ) {
if( IsValidDynamicObject( dGunData[ f ][ gObjID ] ) )
DestroyDynamicObject( dGunData[ f ][ gObjID ] );
dGunData[ f ][ ObjPos ][ 0 ] = 0.0;
dGunData[ f ][ ObjPos ][ 1 ] = 0.0;
dGunData[ f ][ ObjPos ][ 2 ] = 0.0;
dGunData[ f ][ gObjID ] = -1;
dGunData[ f ][ ObjData ][ 0 ] = 0;
dGunData[ f ][ ObjData ][ 1 ] = 0;
}
printf("Drop gun sistem zavrsen");
printf("Kladza sistem zapocet");
IzvuciRezultateKladionica( );
printf("Kladza sistem zavrsen");
printf("Provera kladze start");
foreach( Player, playerid ) {
new bool:tiket = false;
if( KladionicaListic[ playerid ][ Uplaceno ] && !KladionicaListic[ playerid ][ Zavrseno ] ) {
for( new i = 0; i < 10; i++ ) {
if( KladionicaListic[ playerid ][ keciksdva ][ i ] != -1 ) {
if( Parovi[ KladionicaListic[ playerid ][ parID ][ i ] ][ Rezultat ][ 2 ] == KladionicaListic[ playerid ][ keciksdva ][ i ] ) {
tiket = true;
}
else if( Parovi[ KladionicaListic[ playerid ][ parID ][ i ] ][ Rezultat ][ 2 ] != KladionicaListic[ playerid ][ keciksdva ][ i ] ) {
tiket = false;
break;
}
}
}
}
if( tiket == true ) {
KladionicaListic[ playerid ][ Status ] = true;
KladionicaListic[ playerid ][ Zavrseno ] = true;
KladionicaListic[ playerid ][ Uplaceno ] = true;
SaveKladionica( playerid );
}
else if( tiket == false ) {
KladionicaListic[ playerid ][ Status ] = false;
/*for( new i = 0; i < 10; i++ ) {
KladionicaListic[ playerid ][ parID ][ i ] = -1;
KladionicaListic[ playerid ][ keciksdva ][ i ] = -1;
KladionicaListic[ playerid ][ Kvota ][ i ] = 0.0;
}*/
KladionicaListic[ playerid ][ Uplaceno ] = true;
KladionicaListic[ playerid ][ Zavrseno ] = true;
//KladionicaListic[ playerid ][ Uplata ] = 0;
//KladionicaListic[ playerid ][ Dobitak ] = 0;
SaveKladionica( playerid );
}
}
printf("Provera kladze finish");
printf("Provera novi parovi start");
PostaviParoveKladionica( );
printf("Provera novi parovi finish");
}
foreach( Player, i ) {
AFKCheck( i );
PayCheck( i );
CheckGas( i );
OtherCheck( i );
if( PlayerInfo[ i ][ xWanted ] != 0 && GetPlayerInterior( i ) == 0 && GetPlayerVirtualWorld( i ) == 0 ) {
MinutiIgraca[ i ]++;
if( MinutiIgraca[ i ] == 6 ) {
MinutiIgraca[ i ] = 0;
PlayerInfo[ i ][ xWanted ]--;
Dimi_SetPlayerWantedLevel( i, PlayerInfo[ i ][ xWanted ] );
if( PlayerInfo[ i ][ xWanted ] == 0 ) {
strmid( ZlocinInfo[ i ][ zPrijavio ], "Nema", 0, strlen("Nema"), 255 );
strmid( ZlocinInfo[ i ][ zPocinio ], "Nema", 0, strlen("Nema"), 255 );
strmid( ZlocinInfo[ i ][ zZlocin ], "Nema", 0, strlen("Nema"), 255 );
}
}
}
if( PlayerInfo[ i ][ xPljackaVreme ] != 0 ) {
PlayerInfo[ i ][ xPljackaVreme ]--;
}
if( PlayerInfo[ i ][ xHangarTime ] != 0 ) {
PlayerInfo[ i ][ xHangarTime ]--;
}
if( PlayerInfo[ i ][ xZauzimanjeVreme ] != 0 ) {
PlayerInfo[ i ][ xZauzimanjeVreme ]--;
}
if( PlayerInfo[ i ][ xSvercer ] != 0 ) {
PlayerInfo[ i ][ xSvercer ]--;
}
if( PlayerInfo[ i ][ xZatvor ] == OBICAN_ZATVOR ) {
if( VremeZatvaranjaCelija == 2 && OtvoreneCelije == true ) {
SCM( i, SVETLOCRVENA, "ZATVOR | Celije se zatvaraju za 2 minuta, udjite u celije ili cete biti kaznjeni!");
}
else if( VremeZatvaranjaCelija == 1 && OtvoreneCelije == true ) {
SCM( i, SVETLOCRVENA, "ZATVOR | Celije se zatvaraju za 1 minut, udjite u celije ili cete biti kaznjeni!");
}
else if( VremeZatvaranjaCelija == 0 && OtvoreneCelije == false ) {
if( IsPlayerInCell( i ) ) {
SCM( i, SVETLOCRVENA, "ZATVOR | Celije su se zatvorile!");
}
else if( !IsPlayerInCell( i ) ) {
SCM( i, SVETLOCRVENA, "ZATVOR | Celije su se zatvorile, ostali ste van celija i dobili 10 minuta dodatne kazne!");
PlayerInfo[ i ][ xZatvorVreme ] += 10;
new rand = random( sizeof( RandomZatvor ) );
Dimi_SetPlayerPos( i, RandomZatvor[ rand ][ 0 ], RandomZatvor[ rand ][ 1 ],RandomZatvor[ rand ][ 2 ] );
SetTimerEx( "SlobodnoSada", 4000, false, "i", i );
GameTextForPlayer( i, "Ucitavanje ...", 1000, 4 );
TogglePlayerControllable( i, false );
SetCameraBehindPlayer( i );
SetPlayerInterior( i, 0 );
SetPlayerVirtualWorld( i, 0 );
}
}
}
}
return 1;
}
[/pawn]
[pawn]
//task FiveMinutesTimer[420000]()
task FiveMinutesTimer[300000]()
{
for( new plants = 1; plants < MAX_PLANTS; plants++ ) {
if( DrogaStab[ plants ][ wPlanted ] == 1 ) {
DrogaStab[ plants ][ wHoursPassed ]++;
if( DrogaStab[ plants ][ wHoursPassed ] <= 8 ) {
MoveDynamicObject( DrogaStab[ plants ][ wObjectID ], DrogaStab[ plants ][ Plantx ], DrogaStab[ plants ][Planty], DrogaStab[ plants ][Plantz]+0.2, 5 );
DrogaStab[ plants ][ Plantz ] += 0.2;
}
if( DrogaStab[ plants ][ wHoursPassed ] > 12 ) {
DrogaStab[ plants ][ Plantx ] = 0;
DrogaStab[ plants ][ Planty ] = 0;
DrogaStab[ plants ][ Plantz ] = 0;
DrogaStab[ plants ][ wType ] = 0;
DrogaStab[ plants ][ wPlanted ] = 0;
DrogaStab[ plants ][ wHoursPassed ] = 0;
strmid( DrogaStab[ plants ][ wOwner ], "Niko", 0, strlen( "Niko" ), 255);
DrogaStab[ plants ][ wViwo ] = 0;
DestroyDynamicObject( DrogaStab[ plants ][ wObjectID ] );
}
}
}
new Float:health;
foreach( Player, i ) {
if( IsPlayerConnected( i ) ) {
if( !AdminDuty[ i ] && antiCheatCS[ i ][ AFKMinute ] == 0 && !IsPlayerPaused( i ) ) {
if( PlayerInfo[ i ][ xHunger ] > -50 )
PlayerInfo[ i ][ xHunger ] -= 1;
new Float:value;
if( PlayerInfo[ i ][ xHunger ] > 0 ) value = PlayerInfo[ i ][ xHunger ];
else if( PlayerInfo[ i ][ xHunger ] <= 0 ) value = 0;
SetPlayerProgressBarValue( i, GladIgracaBar[ i ], value );
new stringic[ 20 ];
format( stringic, sizeof( stringic ), "%d", PlayerInfo[ i ][ xHunger ] );
PlayerTextDrawSetString( i, GladIgraca[ i ], stringic );
GetPlayerHealth( i, health );
if( PlayerInfo[ i ][ xHunger ] < 0 )
Dimi_SetPlayerHealth( i, health + PlayerInfo[ i ][ xHunger ] );
}
}
}
}
[/pawn]
[pawn]
public DinamicWeather()
{
new tmphour,
tmpminute,
tmpsecond;
gettimeEx(tmphour, tmpminute, tmpsecond);
FixHour( tmphour );
tmphour = shifthour;
#if ZIMSKI_MOD == 1
SetWeather( 38 );
ServerInfo[ Prognozasys ] = 38;
#else
if(tmphour >= 6 && tmphour <= 20)
{
new RandomWeather;
RandomWeather = random(10);
switch(RandomWeather)
{
case 0:
{
SetWeather(1);
SendClientMessageToAll( NARANDZASTA1, " *VREMENSKA PROGNOZA: Vreme je suncano i ugodno." );
ServerInfo[ Prognozasys ] = 1;
}
case 1:
{
SetWeather(7);
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Vreme je tmurno i oblacno. ");
ServerInfo[ Prognozasys ] = 7;
}
case 2:
{
SetWeather(8);
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Kisa je pocela da pada. Upozoravaju se vozaci da opreznije voze radi skliskih kolnika.");
ServerInfo[ Prognozasys ] = 8;
}
case 3:
{
SetWeather(13);
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Vreme je suncano i odlicno za odlazak na plazu. Temperatura vode je ugodnih 22C.");
ServerInfo[ Prognozasys ] = 13;
}
case 4:
{
SetWeather(15);
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Vreme je oblacno i vjetrovito. Brzina vjetra iznosi 20km/h.");
ServerInfo[ Prognozasys ] = 15;
}
case 5:
{
SetWeather(17);
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Vreme je oblacno i ugodno za setnje prirodom.");
ServerInfo[ Prognozasys ] = 17;
}
case 6:
{
SetWeather(24);
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Vreme je suncano. Preporucuje se da se pije sto vise tekucine radi vrucina.");
ServerInfo[ Prognozasys ] = 24;
}
case 7:
{
SetWeather(10);
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Vreme je svjeze i suncano. Temperatura zraka iznosi 29C");
ServerInfo[ Prognozasys ] = 10;
}
case 8:
{
SetWeather(43);
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Vreme je maglovito i tmurno.");
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Upozoravaju se vozaci da opreznije voze radi slabije vidljivosti na cestama.");
ServerInfo[ Prognozasys ] = 43;
}
case 9:
{
SetWeather(40);
SendClientMessageToAll(NARANDZASTA1, " *VREMENSKA PROGNOZA: Vreme je ugodno i suncano.");
ServerInfo[ Prognozasys ] = 40;
}
}
}
else if( tmphour >= 21 && tmphour <= 5 )
{
SetWeather(10);
ServerInfo[ Prognozasys ] = 10;
}
#endif
return 1;
}
[/pawn]
Neke slike/video za lakse dobivanje pomoci(neobavezno): Ako treba postavicu da vidite kako izgleda to :D
Riješiti ćemo mi ovo, i kod mene na IGu neki baguju... :D
Citat: [IG] Muma poslato Avgust 21, 2016, 23:39:09 POSLE PODNE
Riješiti ćemo mi ovo, i kod mene na IGu neki baguju... :D
Mozda je resenje sve prebaciti u obicne tajmere a umesto taskova napraviti stock/public i onda timeri u OnGameModeInit i povuci te publice..
Može biti i to, probati ću/ćemo ako hoćeš. :D
Citat: [IG] Muma poslato Avgust 21, 2016, 23:45:04 POSLE PODNE
Može biti i to, probati ću/ćemo ako hoćeš. :D
Pre svega napraviti backup hahahaha aj na fb da ne spamamo ovde
Znaš da ja volim spamat.. :3