Alles anzeigenDein gewünschtes System scheint nicht allzu komplex zu sein, deswegen wollte ich mal was testen. Ich habe deinen Satz einfach mal ChatGPT gegeben und der Code der rauskam, sah tatsächlich gar nicht schlecht aus. Wichtig ist: Ich habe diesen Code nicht komplett geprüft aber es sollte sicherlich ein guter Baustein sein, um das System kennenzulernen und ggf. daran weiter zu arbeiten.
Code: filterscriptAlles anzeigen#include <a_samp> #define PRICE_PER_KM 2.0 new bool:TaxiDuty[MAX_PLAYERS]; new TaxiDriver[MAX_PLAYERS]; // Speichert Fahrer für Beifahrer new Float:LastPos[MAX_PLAYERS][3]; // Letzte Position für Distanzmessung new Float:DistanceKM[MAX_PLAYERS]; // Gefahrene KM new Text:TaxiTD[MAX_PLAYERS]; public OnFilterScriptInit() { print("Taxi System geladen."); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if(strcmp(cmdtext, "/fahre", true) == 0) { TaxiDuty[playerid] = !TaxiDuty[playerid]; if(TaxiDuty[playerid]) SendClientMessage(playerid, -1, "Du bist nun im Taxi Dienst (onduty)."); else SendClientMessage(playerid, -1, "Du bist nun nicht mehr im Taxi Dienst (offduty)."); return 1; } return 0; } public OnPlayerStateChange(playerid, newstate, oldstate) { // Spieler steigt als Beifahrer ein if(newstate == PLAYER_STATE_PASSENGER) { new vehicleid = GetPlayerVehicleID(playerid); new driver = GetVehicleDriver(vehicleid); if(driver != INVALID_PLAYER_ID && TaxiDuty[driver]) { TaxiDriver[playerid] = driver; DistanceKM[playerid] = 0.0; GetPlayerPos(playerid, LastPos[playerid][0], LastPos[playerid][1], LastPos[playerid][2]); TaxiTD[playerid] = TextDrawCreate(320.0, 50.0, "Taxi: $0"); TextDrawAlignment(TaxiTD[playerid], 2); TextDrawBackgroundColor(TaxiTD[playerid], 0x000000AA); TextDrawFont(TaxiTD[playerid], 1); TextDrawLetterSize(TaxiTD[playerid], 0.3, 1.0); TextDrawColor(TaxiTD[playerid], 0xFFFFFFFF); TextDrawSetOutline(TaxiTD[playerid], 1); TextDrawShowForPlayer(playerid, TaxiTD[playerid]); } } // Spieler steigt aus if(oldstate == PLAYER_STATE_PASSENGER) { if(TaxiDriver[playerid] != INVALID_PLAYER_ID) { new fare = floatround(DistanceKM[playerid] * PRICE_PER_KM); new string[128]; format(string, sizeof(string), "Taxi Fahrt beendet. Preis: $%d", fare); SendClientMessage(playerid, -1, string); GivePlayerMoney(playerid, -fare); GivePlayerMoney(TaxiDriver[playerid], fare); TextDrawHideForPlayer(playerid, TaxiTD[playerid]); TextDrawDestroy(TaxiTD[playerid]); TaxiDriver[playerid] = INVALID_PLAYER_ID; } } return 1; } public OnPlayerUpdate(playerid) { if(TaxiDriver[playerid] != INVALID_PLAYER_ID) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); new Float:dist = floatsqroot( floatpower(x - LastPos[playerid][0], 2) + floatpower(y - LastPos[playerid][1], 2) + floatpower(z - LastPos[playerid][2], 2) ); DistanceKM[playerid] += dist / 1000.0; // GTA Einheiten ≈ Meter LastPos[playerid][0] = x; LastPos[playerid][1] = y; LastPos[playerid][2] = z; new fare = floatround(DistanceKM[playerid] * PRICE_PER_KM); new string[64]; format(string, sizeof(string), "Taxi: $%d", fare); TextDrawSetString(TaxiTD[playerid], string); } return 1; } stock GetVehicleDriver(vehicleid) { foreach(new i : Player) { if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER) return i; } return INVALID_PLAYER_ID; }
Als Alternative möchte ich dir natürlich trotzdem etwas bieten, wofür sich mal Leute Mühe gegeben haben.
Ich habe wir quasi was ganz modernes vom guten Kaliber gefunden (Übrigens über unsere großartige Suchfunktion - gerne mal testen)
Dieses System ist zwar ein Taxi System aber etwas anderes als Beschrieben, trotzdem fande ich es spannend: [Bot] Taxi System V. 1x
Falls du es allerdings doch selbst schreiben willst und nur die Kilometerberechnung das Problem ist, kann ich dir folgenden Beitrag empfehlen: Kilometer Anzeige / Berechnung
Ja damit kann ich arbeiten ich danke dir
ich versuche AI Chatgpt zu meiden da es nicht ein weiter hilft oder auch offt man es nicht richtig nach prüfen kann wenn man davon nicht selber 100% ahnung hat
aber dein code hilft mir schon enorm danke dir ![]()