[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Nein, das geht nicht, da sie zum Teil die gleichen Funktionen nutzen.
-
Allesklar, dann muss ich mich mal schlau machen
-
Moin,
eben habe ich eine Payday Funktion erweitert.Nun, Jeffry hat mir schon mal bei diesem Problem geholfen doch diesmal klappt das nicht so ganz.
Die new; funktionen sind schon rausgenommen, doch wie beim VosaRob krieg ich wirre Zahlen raus die gar nicht stimmen sollten. Jetzt hab ich versucht die unter den Includes zu deklarieren bloß bei einer MySQL Funktion schmiert der Compiler ab
new taxvalue = mysql_tquery(handle, "SELECT tax FROM staat WHERE id = 1");Code
Alles anzeigen@PaydayInit(playerid); @PaydayInit(playerid) { if(IsPlayerConnected(playerid)) { PlayerInfo[playerid][pPayseconds]++; if(PlayerInfo[playerid][pPayseconds] >= 60) { PlayerInfo[playerid][pPayseconds] = 0; PlayerInfo[playerid][pPayminutes]++; if(PlayerInfo[playerid][pPayminutes] >= 60) { PlayerInfo[playerid][pPayminutes] = 0; PlayerInfo[playerid][pBank] += gehalt; SendClientMessage(playerid, COLOR_WHITE, "=========================="); SendClientMessage(playerid, COLOR_WHITE, "Kontoauszug"); SendClientMessage(playerid, COLOR_WHITE, "Lohnüberweisung +%d", scheck); SendClientMessage(playerid, COLOR_WHITE, "Lohnsteuer -%d", lohnsteuer); /*if(PlayerInfo[playerid][pRented] == 1) { SendClientMessage(playerid, COLOR_WHITE, "Miete -%d", pRentBill); }*/ SendClientMessage(playerid, COLOR_WHITE, "Summe +%d", gehalt); SendClientMessage(playerid, COLOR_WHITE, "=========================="); new kassenstring[256]; format(kassenstring, sizeof(kassenstring), "UPDATE staat SET kasse = '%d' WHERE id = 1", lohnsteuer); mysql_tquery(handle, kassenstring); } } } }
-
Hey ich wollte gerade bei meiner Stadthalle z.b eine Zeit einbauen, dass man nachts von 22 Uhr bis Morgens um 8 Nicht rein kann wie scripte ich das in mein Enum sprich die 22.00 Uhr oder auch mal 22:30 Uhr ? Die abfrage bekomme ich alleine hin
soll ich das als Float angeben ? Ich stehe bisschen aufm SchlauchCode
Alles anzeigenenum BuildingsEnum { F_ID, F_ID2, Float:enterX, Float:enterY, Float:enterZ, Worldid, Float:exitX, Float:exitY, Float:exitZ, Float:exitR, InteriorID, InteriorVirtualWorld //z.b b_von //z.b b_bis } new bInfo[][BuildingsEnum] = { {-1,-1,1474.6481,-1827.2919,13.5459,0,961.0393,-1279.3260,999.9360,89.7999,0,1,16.00,17 //hier dann die Zeit},//Stadthalle rein
Mit freundlichen Grüßen
reaL. -
soll ich das als Float angeben ?
Nein, das kannst du mit 4 Integers machen.
hourStartminStarthourEndminEndSo hast du jeweils die Stunde und die Minute als extra Wert (das gibt dir ja auch gettime so zurück).
-
und wie muss ich das dann abfrage ?
-
Neue Funtkionen, aber wenn ich zum Beispiel ein R7 Script mit der R39 Include compilen würde, würde es Fehler geben.//E | Da ein schlicht und ergreifend neue Funktionen gibt, und alte Funtkionen ausgetauscht wurden oder verändert wurden.
Das war mir auch bewusst, jedoch interessieren mich die explizieten Vorteile, also ob es gff. ein wenig performance schonender ist mal abgesehen von den anderen Funktionen
//Vom Handy geschrieben -
und wie muss ich das dann abfrage ?
if(h > 22 || h < 8 || (h == 22 && m >= 30) || (h == 8 && m < 15))
{
//Zwischen 22:30 und 8:15
}Die festen Werte die ich hier eingetragen habe ersetzt du dann durch deine Variablen.
-
-
geht auch kürzer
Nein, denn wenn es z.B. 23:01 ist wird dein Code nicht funktionieren, da weder die erste noch die zweite Bedingung zutrifft.
-
ups, stimmt
-
if(h > 22 || h < 8 || (h == 22 && m >= 30) || (h == 8 && m < 15)){ //Zwischen 22:30 und 8:15}
Die festen Werte die ich hier eingetragen habe ersetzt du dann durch deine Variablen.Nein Jeffry du hast ein Fehler drinne
So müsste es aussehen
Bei der ersten abfrage ob H Größer als 22 ist und kleiner als 8 da hattest du aber da muss ein && hin
Aber Dankeschön funktioniert TadellosMit freundlichen Grüßen
reaL. -
h > 22 && h < 8
h kann nie größer als 22 und gleichzeitig kleiner als 8 sein.
Das klappt wahrscheinlich nur momentan zufällig, weil du die Klammern bei den anderen beiden Abfragen weg gemacht hast.
-
-
Das liegt daran, dass ich den Code auf den Tageswechsel angepasst habe, wie in deinem Beispiel.
Mache es dann so, für Zeiten die nicht über den Tageswechsel gehen:
{-1,-1,1474.6481,-1827.2919,13.5459,0,961.0393,-1279.3260,999.9360,89.7999,0,1,19,0,8,0},//Stadthalle reinif(h > bInfo[i][b_von] || h < bInfo[i][b_bis] || (h == bInfo[i][b_von] && m >= bInfo[i][b_von2]) || (h == bInfo[i][b_bis] && m < bInfo[i][b_bis2])) { }
else
{
//Darf rein
}Ich habe es bewusst mit dem else hier gemacht und nicht mit einer kompletten Negation, um Verwechselungen auszuschließen.
Also praktisch:
Immer erst die späte Zeit, dann die frühe Zeit.
Wenn nachts erlaubt: if-Teil
Wenn tagsüber erlaubt: else-Teil -
Kann ich das nicht so machen wie ich es eben Gepostet hab ?
-
Nein, weil um 22 Uhr zum Beispiel (was ja nicht zwischen 8 und 19 Uhr liegt) wäre das hier wahr:
h > bInfo[i][b_von]
Und somit die ganze Abfrage auch. Deshalb geht das so nicht. -
-
Aber wenn ich das so mache dann geht es und ist doch richtig oder nicht oder bin ich Doof ?
Code
Alles anzeigenenum BuildingsEnum { F_ID, F_ID2, Float:enterX, Float:enterY, Float:enterZ, Worldid, Float:exitX, Float:exitY, Float:exitZ, Float:exitR, InteriorID, InteriorVirtualWorld, b_von, b_von2, b_bis, b_bis2 } new bInfo[][BuildingsEnum] = { {-1,-1,1474.6481,-1827.2919,13.5459,0,961.0393,-1279.3260,999.9360,89.7999,0,1,8,0,20,25},//Stadthalle rein {-1,-1,962.8965,-1279.3810,999.9360,1,1474.7374,-1824.8356,13.5459,359.9959,0,0,0,0,24,0},//Stadthalle raus
Code
Alles anzeigennew h,m,s; gettime(h,m,s); printf("%d:%d Uhr bis %d:%d Uhr",bInfo[i][b_von],bInfo[i][b_von2],bInfo[i][b_bis],bInfo[i][b_bis2]); printf("h = %d",h); if(h > bInfo[i][b_von] && h < bInfo[i][b_bis] || (h == bInfo[i][b_von] && m >= bInfo[i][b_von2]) || (h == bInfo[i][b_bis] && m <= bInfo[i][b_bis2])) { TogglePlayerControllable(playerid,0); SetTimerEx("Tazer",1000,0,"i",playerid); SetPlayerPos(playerid,bInfo[i][exitX],bInfo[i][exitY],bInfo[i][exitZ]); SetPlayerFacingAngle(playerid,bInfo[i][exitR]); SetPlayerInterior(playerid,bInfo[i][InteriorID]); SetPlayerVirtualWorld(playerid,bInfo[i][InteriorVirtualWorld]); SetCameraBehindPlayer(playerid); return 1; } else { SendClientMessage(playerid,ROT,"Zu Spät!"); return 1; }