Jump to content
  • 0

pomoc Dni v týždnii


Mikoo

Dotaz

Zdravim , dnes som bol na nete a hladal som dni v týždni.. Našiel som niečo, ale ked som si to prerobil a dal na server tak mi tam ukazovalo štvrtok na miesto soboty .. tu mate kod..

 

---KOD---

 

 

 

#include <a_samp>

 

new Text:days;

 

forward GetWeekdayNum(d,m,y);

forward settime();

 

public OnFilterScriptInit()

{

days = TextDrawCreate(502.000000,11.000000,"----");

TextDrawAlignment(days,0);

TextDrawBackgroundColor(days,0x000000ff);

TextDrawFont(days,3);

TextDrawLetterSize(days,0.700000,1.000000);

TextDrawColor(days,0xffff00cc);

TextDrawSetOutline(days,1);

TextDrawSetProportional(days,1);

TextDrawSetShadow(days,10);

return 1;

}

 

public OnPlayerSpawn(playerid)

{

TextDrawShowForPlayer(playerid, days);

return 1;

}

 

public OnPlayerDisconnect(playerid, reason)

{

TextDrawHideForPlayer(playerid, days);

return 1;

}

 

public settime(){

new day, month, year;

new weekday;

getdate(day, month, year);

weekday = GetWeekdayNum(day, month, year);

if(weekday == 1){TextDrawSetString(days,"Pondelok");}

if(weekday == 2){TextDrawSetString(days,"Utorok");}

if(weekday == 3){TextDrawSetString(days,"Streda");}

if(weekday == 4){TextDrawSetString(days,"Stvrtok");}

if(weekday == 5){TextDrawSetString(days,"Piatok");}

if(weekday == 6){TextDrawSetString(days,"Sobota");}

if(weekday == 7){TextDrawSetString(days,"Nedela");}

return 1;

}

 

public GetWeekdayNum(d,m,y)

{

m-=2;

if(m<=0)

{

y--;

m+=12;

}

new cen = y/100;

y=getrem(y,100);

new w = d + ((13*m-1)/5) + y + (y/4) + (cen/4) - 2*cen;

w=getrem(w,7);

if (w==0) w=7;

return w-1;

}

getrem(a, B)

{

new div = a/b;

new left = a-b*div;

return left;

}

 

 

Edited by Mikoo
Link to comment
Share on other sites

19 odpovědí na tuto otázku

Recommended Posts

  • 0

Tady jsem ti našel lepší, snad i funkční

 

 

GetWeekDay(day=0, month=0, year=0)
{
  if (!day)
    getdate(year, month, day);

  new
    weekday_str[10],
    j,
    e
  ;

  if (month <= 2)
  {
    month += 12;
    --year;
  }

  j = year % 100;
  e = year / 100;

  switch ((day + (month+1)*26/10 + j + j/4 + e/4 - 2*e) % 7)
  {
    case 0: weekday_str = "Saturday";
    case 1: weekday_str = "Sunday";
    case 2: weekday_str = "Monday";
    case 3: weekday_str = "Tuesday";
    case 4: weekday_str = "Wednesday";
    case 5: weekday_str = "Thursday";
    case 6: weekday_str = "Friday";
  }

  return weekday_str;
}

//Usage
GetWeekDay(); //should return the weekday of today
GetWeekDay(13, 3, 2009); //should return "Friday" 

 

 

Edited by GaRGoyLeS
Link to comment
Share on other sites

  • 0
Tady jsem ti našel lepší, snad i funkční

 

 

GetWeekDay(day=0, month=0, year=0)
{
  if (!day)
    getdate(year, month, day);

  new
    weekday_str[10],
    j,
    e
  ;

  if (month <= 2)
  {
    month += 12;
    --year;
  }

  j = year % 100;
  e = year / 100;

  switch ((day + (month+1)*26/10 + j + j/4 + e/4 - 2*e) % 7)
  {
    case 0: weekday_str = "Saturday";
    case 1: weekday_str = "Sunday";
    case 2: weekday_str = "Monday";
    case 3: weekday_str = "Tuesday";
    case 4: weekday_str = "Wednesday";
    case 5: weekday_str = "Thursday";
    case 6: weekday_str = "Friday";
  }

  return weekday_str;
}

//Usage
GetWeekDay(); //should return the weekday of today
GetWeekDay(13, 3, 2009); //should return "Friday" 

 

Nechapem tomu..

 

Hodil by si mi to do kodu ako to ma vyzerať prosim ťa ? Ďakujem...

Link to comment
Share on other sites

  • 0

Přesně!, stačí vložit tu funkci do módu nebo fs, kam chceš a pak máš dvě možnosti, jak to použít (s parametry nebo bez):

GetWeekDay(); //vrátí ti dnešní den
GetWeekDay(13, 3, 2009); //Vrátí ti, co bylo za den v daném datu, praktické využití: budeš pořádat nějakou velkou akci na serveru
//new s[64];
format(s, 64, "Akce se bude konat ve %s 24. 9. 2015 v 15.00 hod." GetWeekDay(24, 9, 2015));
//vypíše: Akce se bude konat ve Čtvrtek 24. 9. 2015 v 15.00 hod. 
Edited by GaRGoyLeS
Link to comment
Share on other sites

  • 0

mam tu kod ale mam error

 

 

 

#include <a_samp>

new Text:days;

forward settime();

public OnFilterScriptInit()
{
days = TextDrawCreate(502.000000,11.000000,"----");
TextDrawAlignment(days,0);
TextDrawBackgroundColor(days,0x000000ff);
TextDrawFont(days,3);
TextDrawLetterSize(days,0.700000,1.000000);
TextDrawColor(days,0xffff00cc);
TextDrawSetOutline(days,1);
TextDrawSetProportional(days,1);
TextDrawSetShadow(days,10);
return 1;
}

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

public OnPlayerDisconnect(playerid, reason)
{
 TextDrawHideForPlayer(playerid, days);
 return 1;
}

public settime(){
new day, month, year;
new weekday;
getdate(day, month, year);
weekday = GetWeekDay(day, month, year);  <----------- tu je erroor !!!
if(weekday == 1){TextDrawSetString(days,"Monday");}
if(weekday == 2){TextDrawSetString(days,"Tuesday");}
if(weekday == 3){TextDrawSetString(days,"Wednesday");}
if(weekday == 4){TextDrawSetString(days,"Thursday");}
if(weekday == 5){TextDrawSetString(days,"Friday");}
if(weekday == 6){TextDrawSetString(days,"Saturday");}
if(weekday == 7){TextDrawSetString(days,"Sunday");}
return 1;
}

stock GetWeekDay(day=0, month=0, year=0)
{
  if (!day)
    getdate(year, month, day);

  new
    weekday_str[10],
    j,
    e
  ;

  if (month <= 2)
  {
    month += 12;
    --year;
  }

  j = year % 100;
  e = year / 100;

  switch ((day + (month+1)*26/10 + j + j/4 + e/4 - 2*e) % 7)
  {
    case 0: weekday_str = "Saturday";
    case 1: weekday_str = "Sunday";
    case 2: weekday_str = "Monday";
    case 3: weekday_str = "Tuesday";
    case 4: weekday_str = "Wednesday";
    case 5: weekday_str = "Thursday";
    case 6: weekday_str = "Friday";
  }

  return weekday_str;
}

 

/*GetWeekDay();
GetWeekDay(13, 3, 2009);*/

 
errors
 

C:\Users\Lenovo\Desktop\days.pwn(37) : error 006: must be assigned to an array
Pawn compiler 3.2.3664     Copyright © 1997-2006, ITB CompuPhase

1 Error.

Edited by Mikoo
Link to comment
Share on other sites

  • 0

Děláš úplnou blbost...

 

 

 

public GetWeekdayNum(d,m,y)
{
m-=2;
if(m<=0)
{
y--;
m+=12;
}
new cen = y/100;
y=getrem(y,100);
new w = d + ((13*m-1)/5) + y + (y/4) + (cen/4) - 2*cen;
w=getrem(w,7);
if (w==0) w=7;
return w-1;
}
getrem(a, 
{
new div = a/b;
new left = a-b*div;
return left;
} 

 

 

 

Tahle tvá stará funkce ti vrátila nějaké číslo, podle toho čísla jsi pak v public settime() nastavil název dne (string)

Ovšem ta fce, co sem ti jsem dal já, má v sobě i názvy dnů, takže na to nepotřebuješ další pomocný public settime().

 

Výsledný kód vypadá takto:

 

 

#include <a_samp>

new Text:days;

public OnFilterScriptInit()
{
	days = TextDrawCreate(502.000000,11.000000,"----");
	TextDrawAlignment(days,0);
	TextDrawBackgroundColor(days,0x000000ff);
	TextDrawFont(days,3);
	TextDrawLetterSize(days,0.700000,1.000000);
	TextDrawColor(days,0xffff00cc);
	TextDrawSetOutline(days,1);
	TextDrawSetProportional(days,1);
	TextDrawSetShadow(days,10);
	return 1;
}
public OnPlayerSpawn(playerid)
{
 	TextDrawShowForPlayer(playerid, days);
 	return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
 	TextDrawHideForPlayer(playerid, days);
 	return 1;
}

GetWeekDay(day=0, month=0, year=0)
{
  if (!day)
    getdate(year, month, day);
  new
    weekday_str[10],
    j,
    e
  ;
  if (month <= 2)
  {
    month += 12;
    --year;
  }
  j = year % 100;
  e = year / 100;
  switch ((day + (month+1)*26/10 + j + j/4 + e/4 - 2*e) % 7)
  {
  	case 0: weekday_str = "Saturday";
    case 1: weekday_str = "Sunday";
    case 2: weekday_str = "Monday";
    case 3: weekday_str = "Tuesday";
    case 4: weekday_str = "Wednesday";
    case 5: weekday_str = "Thursday";
    case 6: weekday_str = "Friday";
  }
  return weekday_str;
} 

 

 

 

Zkus u toho příště trochu přemýšlet, je to jen o zdravém selském rozumu. ;)

Edited by GaRGoyLeS
Link to comment
Share on other sites

  • 0

Ukaž kód... Ty chceš v textdrawu ukazovat, co je za den? Pochopil jsem to správně?

//Edit: No jo ty sis to neupravil, já ti neupravoval ať se ti to zobrazí... ;) 

days = TextDrawCreate(502.000000,11.000000,"%s", GetWeekDay());

Toto nahraď a mělo by to jít. ;)

Edited by GaRGoyLeS
Link to comment
Share on other sites

  • 0

Ukaž kód... Ty chceš v textdrawu ukazovat, co je za den? Pochopil jsem to správně?

//Edit: No jo ty sis to neupravil, já ti neupravoval ať se ti to zobrazí... ;)

days = TextDrawCreate(502.000000,11.000000,"%s", GetWeekDay());

Toto nahraď a mělo by to jít. ;)

https://wiki.sa-mp.com/wiki/TextDrawCreate

 

težko težko...

 

new str[11];

format(str,sizeof(str),"%s",GetWeekDay());

days = TextDrawCreate(502.000000,11.000000,str);

Link to comment
Share on other sites

  • 0

Muzete LOCK ....

za prve autor modu může lock sám. za druhe přestan tady spamovat pořád kktiny. fakt málo jde vidět že jenom to děláš jen kvůli příspěvkům..  co si to tady prohližím tak si mu nenapsal ani jednu věc která by mu pomohla.. tak když už chceš farmit. tak alespon pomáhej u toho...

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...