Wie kann man Läden wie z.B. den Ammunation oder die Stadthalle an Sonntagen schließen? Bzw. den Befehl an Sonntagen sperren.
Läden Sonntag's schließen?
- Quetai
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
http://wiki.sa-mp.com/wiki/Getdate
ZitatReturns The number of days since the start of the year.
Finde heraus welcher Tag das war, dann kannst du mit einer simplen Rechnung
ausrechnen, was für ein Tag heute ist. -
Hilft mir nicht weiter^^
-
Geht es vielleicht so?
new Days = getdate();
for(new i=0; i<sizeof(Days); i++)
{
if(Days != 1)
{
Days += 7;
}
if(getdate==Days)
{
//Laden zu!!
}
} -
Ich hab das mit einem /enter Befehl, halt wie man in die Läden kommt...Wie mach ich das?
-
Datum abfragen - wenn Sonntag, dann returnen, Message: Sonntag ist zu^^
-
Getdate gibt die Tage seit dem Anfang des Jahres zurück, eine einfache Wochentagsrückgabe existiert nicht.
Ich habe aber eine grundlegende Idee, wie man es umsetzen könnte - dauert aber ein bisschen.
-
Ich denke so sollte es gehen, der Befehl oben ist etwas Fail, aber ich weiß nicht ob
der hier jetzt geht, aber ich glaub schonnew Year;
getdate(Year);
new Days_ZZ = 1, Days_ZD = 5;for(new i=0; i<60; i++)
{
if(Year == 2012)
{
Days_ZZ += 7;
if(getdate() == Days_ZZ)
{
//Laden zu!!
}
}
if(Year == 2013)
{
Days_ZD += 7;
if(getdate() == Days_ZD)
{
//Laden zu!!
}
}
}new Days_ZZ = 1, Days_ZD = 5;
Days_ZZ sind die Tage 2012, und der 01.01 war der erste Sonntag, wenn es nicht der 01.01 ist, macht das Ding Days+7 Tage, also 08.01 (auch Sonntag) wenn es heute nicht der 08.01 ist wieder +7 und so weiter..
Days_ZD ist das selbe, aber für nächstes Jahr. Also 2013 -
Ich denke so sollte es gehen, der Befehl oben ist etwas Fail, aber ich weiß nicht ob
der hier jetzt geht, aber ich glaub schonnew Year;
getdate(Year);
new Days_ZZ = 1, Days_ZD = 5;for(new i=0; i<60; i++)
{
if(Year == 2012)
{
Days_ZZ += 7;
if(getdate() == Days_ZZ)
{
//Laden zu!!
}
}
if(Year == 2013)
{
Days_ZD += 7;
if(getdate() == Days_ZD)
{
//Laden zu!!
}
}
}
Setz dann einfach den Wert auf 1. Wenn eins ist einfach abfragen beim enter befehl... -
-
Ehmm, du verstehst es falsch
Setz einfach einen Wert auf 1, dann kannst du einfach bei denen enter befehlen abfragen, ob der wert auf 1 ist. wenn ja dann return -
@Sh12: und was ist dann 2014?
-
Muss man dann einstellen..
Sagen wir mal 2014 sieht so aus, dass der
01.01.2014 ein Mittwoch ist
Dann ist der Sonntag der 05.01.2014das if(Yeah == 2012) ersetzt man durch
if(Year == 2014) dann ersetzt man noch Days_ZZ = 1
durch Days_ZZ = 5Aber wie gesagt, ich weiß nicht 100% ob es funktioniert
-
if(strcmp(cmd, "/enter", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,1791.7289,-1163.3762,23.8281))//Waffenladen
{
SetPlayerPos(playerid,833.7824,7.3484,1004.1797);
SetPlayerInterior(playerid,3);
SetPlayerVirtualWorld(playerid,3);
}
return 1;
}
Das ist jetzt mein Befehl um in die Ammunation zu kommen..^^Müsste das dann so aussehen? :
new Year;
getdate(Year);
new Days_ZZ = 1, Days_ZD = 5;for(new i=0; i<60; i++)
{
if(Year == 2012)
{
Days_ZZ += 7;
if(getdate() == Days_ZZ)
{
if(strcmp(cmd, "/enter", true) == 0)
{
SendClientMessage(playerid, COLOR_GREY, "Sonntags ist der Ammunation geschlossen");
}
return 1;
}
}
} -
Ungefähr so
if(strcmp(cmd, "/enter", true) == 0)
{
new Year;
getdate(Year);
new Days_ZZ = 1, Days_ZD = 5;for(new i=0; i<60; i++)
{
if(Year == 2012)
{
Days_ZZ += 7;
if(IsPlayerInRangeOfPoint(playerid,3.0,1791.7289,-1163.3762,23.8281))//Waffenladen
{
if(getdate() == Days_ZZ)
{
SetPlayerPos(playerid,833.7824,7.3484,1004.1797);
SetPlayerInterior(playerid,3);
SetPlayerVirtualWorld(playerid,3);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Sonntags ist der Ammunation geschlossen");
}
}
}
if(Year == 2013)
{
Days_ZZ += 7;
if(IsPlayerInRangeOfPoint(playerid,3.0,1791.7289,-1163.3762,23.8281))//Waffenladen
{
if(getdate() == Days_ZD)
{
SetPlayerPos(playerid,833.7824,7.3484,1004.1797);
SetPlayerInterior(playerid,3);
SetPlayerVirtualWorld(playerid,3);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Sonntags ist der Ammunation geschlossen");
}
}
}
} -
Eig. ist die Schleife unnötig, Weil du verwendest die Variable "i" nirgends wo
-
Eig. ist die Schleife unnötig, Weil du verwendest die Variable "i" nirgends wo
Jep hast rechtKönnte man so machen
for(new i=1; i<365; i += 7)
{
if(getdate() == i) {
//Laden offen
} else {
//Laden zu
}
} -
Jep hast rechtKönnte man so machen
for(new i=1; i<365; i += 7)
{
if(getdate() == i) {
//Laden offen
} else {
//Laden zu
}
}
Du vergisst die Schaltjahre mit 366 Tagen. -
Um's zu testen, hab' ich Days_ZZ = 1; zu Days_ZZ = 5; geändert. 5, weil der 5.1.2012 ein Donnerstag war.
Aber ich kann trotzdem mit /enter ins Ammunation... -
Du vergisst die Schaltjahre mit 366 Tagen.
Es gibt auch unglaublich viele Schaltjahre@Quentai
Dann weiß ich ehrlich nicht, warum es nicht geht :O