21.12.2018, 23:16
Hallo zusammen,
mal wieder ein Post, der was länger wird ![]()
Oftmals gewünscht wurde ein Leitstellensystem für Taxis, um die Verfügbarkeit der Taxifahrer zu verbessern. Das jetzige System klappt ja nur mäßig gut, auch da das Annehmen von Taxi-Dispatches nicht sehr angenehm ist.
Das hier vorgestellte System soll eine Leitstelle für Taxifahrer ermöglichen, die vollverträglich mit den jetzigen Systemen ist. Insbesondere können Taxifahrer weiterhin als Freiberufler tätig sein; dieses Argument wurde schon oft zur Ablehnung von Systemen genutzt, diesmal gilt es nicht ![]()
Nun zur Sache: Das System ist voll funktionsfähig (wenn auch noch insgesamt 40 Knöpfe zu erstellen sind; die benötigten Funktionen existieren aber alle schon). Wer selbst damit rumspielen will, kann sich eine Kopie des Blattes erstellen und Dinge ausprobieren ![]()
https://docs.google.com/spreadsheets/d/1Ip4CISYq38uq62r7HGtF_t1o2Lf_b7NEoRsdjmShmNA/edit?usp=sharing
________________________________
Grundlegendes
Grundidee ist die Aufteilung der Insel in verschiedene Bereiche (z.B. West Los Santos [Del Perro Pier, Vespucci, Life Invader, ...], Paleto Bay [Paleto Cove Bootsgarage, ...]). Eine Karte ist im dritten Blatt des Spreadsheets zu finden.
Als Taxifahrer kann man sich einen Bereich aussuchen und sich im ersten Blatt, "Taxifahrer-Dienstblatt" eintragen, einen Standort wählen und seinen Status einstellen (Felder C10 - H10). Zudem gibt es zwei Buttons, "Neuer Auftrag" sowie "Fahrgast austragen" (I10, J10). Diese werden gleich erklärt ![]()
Aufträge zur Beförderung von Fahrgästen werden in das zweite Dienstblatt "Leitstellen-Dienstblatt" eingetragen. Neben Name und Tel.Nr. werden die Zeit der Anfrage sowie jetziger Standort und Zielort eingetragen.
________________________________
Das Leitstellensystem als Taxifahrer
Wir nehmen Frau Martha Musterfrau, 31, Taxifahrerin und zurzeit mit ihrem Taxi in West Los Santos geparkt. Sie ist zurzeit verfügbar und kann den Knopf "neuer Auftrag" betätigen. Das Leitstellensystem wählt nun aus den verfügbaren Anfragen (Blatt 2) diejenige aus, die 1. am nächsten und 2. am längsten offen ist (wie genau? Siehe unten). Die Daten werden dann automatisch in die Felder K10 - Q10 eingetragen. Frau Musterfrau kann dann den Fahrgast kontaktieren und alles Weitere ausmachen.
Ist die Fahrt vollendet, kann Frau Musterfrau ihren Fahrgast austragen lassen. Das System übernimmt dies komplett nach Druck auf den entsprechenden Knopf (J10) und trägt sowohl die Daten im Taxifahrer-Dienstblatt als auch im Leitstellen-Dienstblatt aus.
________________________________
Das Leitstellensystem als Fahrgast (oder auch: Wie kann eine Leitstelle funktionieren?
Hier gibt es zwei Optionen:
Die unaufwendigste Version bedeutet eine Freigabe des Taxi-Leitstellenblattes für alle Personen. Man kann sich als Fahrgast selbständig eintragen und austragen. Ob diese Version funktionieren kann, wage ich allerdings zu bezweifeln, da viele Taxifahrer mitspielen und sich im System eintragen müssten.
Bei der zweiten Option gibt es eine Leitstelle, die man anrufen kann und die die angegebenen Daten ins Leitstellen-Dienstblatt einträgt. Diese kann dann auch vorhandene Anfragen an die Taxifahrer weiterleiten.
Da die Leitstelle als Freiberuf nichts verdienen würde, wäre eine Option, diese in einer Fraktion einzubinden. Ich bin dann mal so frei und erinnere, dass eine entsprechende Fraktion existieren könnte *hust* Los Santos Transit *hust*
Aber ernsthaft: Die Leitstelle in einer Verkehrsgesellschaft bedeutet einen sicheren Verdienst und eine Besetzung aber einer bestimmten Personenanzahl in der Fraktion (weil Dienstanweisung und so). Die Taxifahrer bleiben Freiberufler und können mit hauptamtlichen Leitstellen noch bessere Arbeit leisten.
In einer Fraktion könnte auch eine Leitstellennummer (999 ?) angegeben werden, mit der die Taxi-Leitstelle erreichbar ist. Diese könnte z.B. in der Taxi-App als erste Option angezeigt werden, wenn sie besetzt ist. So wäre die fast optimale Anbindung ermöglicht, insofern das System überhaupt verwendet wird.
________________________________
Technisches
Im Wesentlichen sind die geskripteten Buttons zu erwähnen. Alles andere sind Dropdown-Menüs, die mit wenigen Spielereien und einem versteckten Blatt "Script" erstellt worden sind.
Bei den Buttons ist die Funktionsweise von "Fahrgast austragen" auch klar: Lösche alle Felder, in die Fahrgast-Informationen eingetragen wurden.
Der Button "Neuer Auftrag" ist interessanter:
Beispiel: Martha Musterfrau, eingetragen in West Los Santos, betätigt den Knopf neue Anfrage.
Als neuer Auftrag soll der nächste verfügbare angenommen werden, der am ältesten ist. Geprüft wird nur der Startort, da das Ziel ist, so schnell wie möglich ein Taxi zum Fahrgast zu bekommen.
Somit muss aber zuerst eine Liste erstellt werden, nach der die Gebiete abgefragt werden.
Da Martha Musterfrau in West Los Santos eingetragen ist, wird folgende Liste zur Gebietsüberprüfung verwendet:
[West Los Santos, Chumash, South Los Santos, Central Los Santos, Vinewood Hills, East Los Santos, Harmony, Sandy Shores, Grapeseed, Paleto Bay] (alle Listen finden sich im Spreadsheet -> Script -> A14:J23)
Diese Liste wird geladen; anhand dieser werden dann alle Standorte im Leitstellen-Dienstblatt durchgegangen, bis die erste in Frage kommende Anfrage gefunden wurde.
Die erste in Frage kommende Anfrage ist jene von Max Meier von Chumash nach Harmony.
Damit nun bei mehreren Anfragen die unteren nicht permanent in die Röhre schauen, wurde eine sekundäre Abfrage nach der Zeit eingefügt. Die älteste Anfrage eines Gebietes wird zuerst angenommen.
Die Anfrage von Max Meier ist um 17:55 Uhr eingegangen, die Anfrage von Malte Meiermar von Chumash nach Grapeseed - Leuchtturm ist aber bereits um 17:50 Uhr eingangen. Daher wird die Anfrage von Malte Meiermar angenommen.
Abschließend werden die Daten des gewählten Fahrgastes im Taxifahrer-Dienstblatt eingetragen. Hierbei gilt: Wurde eine bestimmte Position eingetragen, wird diese anstelle des groben Standortes angegeben. Zudem wird im Leitstellen-Dienstblatt hinter der gerade gewählten Person ein "x" gesetzt. Dies wird verwendet, um eine Doppeltzuweisung von Fahrgästen zu Taxifahrern zu vermeiden. Der Status des Taxifahrers wird von "Verfügbar" auf "Mit Auftrag" geändert.
Im Falle von Malte Meiermar wird folgendes eingetragen: K10 "Malte Meiermar", M10 "80632", N10 "Chumash", P10 "Leuchtturm".
________________________________
Und wer mir jetzt immernoch nicht glaubt, dass es funktioniert, hier ist der Quellcode für den "Neuer Auftrag"-Button. Sprache ist javascript (weil Google Spreadsheet-internes Makro). Die erste Funktion "NeuerAuftrag1" ist leider notwendig, da ich die Position des Buttons im Spreadsheet nicht auslesen kann. Es existieren somit 21 dieser Funktionen, bei denen nur die Variable "KN" eine Zahl zwischen 1 und 21 ist (je nach Taxifahrer). Könnt Ihr wie folgt ausprobieren:
Rechtsklick auf den Knopf -> 3 senkrecht angeordnete Punkte anklicken (schwer zu sehen) -> Skript zuweisen -> Zahl am Ende zwischen 1 und 21 frei wählen. Dann Taxistandort in Zeile [Zahl] + 9 wählen und Knopf betätigen.
________________________________
function NeuerAuftrag1(){
var KN = 1;
Auftrag(KN);
}
function Auftrag(KN){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var TXF = ss.getSheets()[0];
var LST = ss.getSheets()[1];
var SCR = ss.getSheets()[3];
var TSO = TXF.getRange(9+KN,6).getValue();
var Suchstart = [TSO];
var Suchorte = Suchen(TSO, SCR, Suchstart);
var FGr = AuftragFinden(Suchorte, LST);
Eintragung(TXF, LST, KN, FGr);
}
function Suchen(TSO, SCR, Suchstart){
var Suchorte = Suchstart;
for (i = 0; i < 10; i++) {
if (TSO == SCR.getRange(14+i, 1).getValue()){
Suchorte.push(SCR.getRange(14+i,2).getValue());
Suchorte.push(SCR.getRange(14+i,3).getValue());
Suchorte.push(SCR.getRange(14+i,4).getValue());
Suchorte.push(SCR.getRange(14+i,5).getValue());
Suchorte.push(SCR.getRange(14+i,6).getValue());
Suchorte.push(SCR.getRange(14+i,7).getValue());
Suchorte.push(SCR.getRange(14+i,8).getValue());
Suchorte.push(SCR.getRange(14+i,9).getValue());
Suchorte.push(SCR.getRange(14+i,10).getValue());
break;
}
}
return Suchorte;
}
function AuftragFinden(Suchorte, LST){
loop1:
for (j=0; j < Suchorte.length; j++) {
var Suchort = Suchorte[j];
loop2:
for (k = 0; k < 21; k++) {
if (Suchort == LST.getRange(10+k,7).getValue()){
if (LST.getRange(10+k, 15).getValue()!="x"){
var FGr = 10 + k;
var l = k
break loop1;
}
}
}
}
for (m = l+1; m < 21; m++) {
if (Suchort == LST.getRange(10+m,7).getValue()){
if (LST.getRange(10+k, 6).getValue() > LST.getRange(10+m, 6).getValue()){
if (LST.getRange(10+m, 15).getValue()!="x"){
var FGr = 10 + m;
}
}
}
}
LST.getRange(FGr, 15).setValue("x");
return FGr;
}
function Eintragung(TXF, LST, KN, FGr){
TXF.getRange(9+KN, 11).setValue(LST.getRange(FGr, 3).getValue());
TXF.getRange(9+KN, 13).setValue(LST.getRange(FGr, 5).getValue());
if (LST.getRange(FGr, 9).getValue() !=""){
TXF.getRange(9+KN, 14).setValue(LST.getRange(FGr, 9).getValue());
} else {
TXF.getRange(9+KN, 14).setValue(LST.getRange(FGr, 7).getValue());
}
if (LST.getRange(FGr, 13).getValue() !=""){
TXF.getRange(9+KN, 16).setValue(LST.getRange(FGr, 13).getValue());
} else {
TXF.getRange(9+KN, 16).setValue(LST.getRange(FGr, 11).getValue());
}
TXF.getRange(9+KN, 8).setValue("Mit Auftrag");
}
#BusseFürSilverman
Viele Grüße,
Sebastian
EDIT: Spoilerfarben sind aber mal hart krebs. Habs editiert, der Post ist halt jetzt was länger ![]()
22.12.2018, 08:15
hallo,
ich finde den vorschlag echt genial. ich würde gern meine hilfe anbieten da ich selber taxi fahrer bin und mich mit dem erstellen von tabellen auskenne.
Gruß
brian zvonecek
Eric Human
22.12.2018, 09:20
Guten Tag,
am Taxi System wird derzeit erstmal nichts verändert, da dieses zumindest Funktioniert und wir die Prioritäten eher auf andere Sachen legen, wie zum Beispiel andere Jobs für Anfänger.
Sollten wir das Taxi System in Zukunft überarbeiten, werden wir uns deinen Vorschlag erneut ansehen.
Trotzdem vielen Dank für deinen Vorschlag.
Ich werde dein Thema nun schließen und wir sehen uns es zu gegebener Zeit erneut an.
Mit freundlichen Grüßen
Eric Human
/Close
