Beiträge von Kaliber
-
-
Um es noch zu erwähnen, lösche das else aus der Schleife, das ist falsch, da es dann bei dem Ersten falschen Ergebnis false returnt.
#Handy
-
Es gibt so viele Tutorials da draußen

Nutze sowas

Aber hier mal ein Beispiel:
PHP
Alles anzeigen$number = 10765; $stmt = $conn->prepare("SELECT `name` FROM `users` WHERE `Number` = ?"); $stmt->bind_param('i', $number); $stmt->execute(); if (!($res = $stmt->get_result())) { //Nix gefunden var_dump("Keinen Wert für Nummer $number gefunden."); } else { // Ausgabe aller Namen var_dump($res->fetch_all()); } $conn->close();Solltest immer Querys preparen, damit keine MySQL-Injection möglich ist

-
Ich versteh die Schilder nicht

Rechts quer durch die Fahrbahn zu fahren ist okay, links aber nicht?

Joa das Gestrüpp links sieht so aus, als wäre es lange nicht gegossen worden, macht jetzt nicht den Besten Eindruck für eine Stadt

Ansonsten joa, sind Bäume und grüne Sträucher und 2 Laternen

-
PrivateVehicle[slot][veh][vehNumberPlate]
Da hattest du dich wohl vertippt gehabt...
Das muss natürlich PrivateVehicle[VehicleOwner][slot][vehNumberPlate] heißen...
-
if(VehicleOwner == INVALID_PLAYER_ID)
Da ein != hin.
Hab meinen alten Code bearbeitet gehabt.
-
sry natürlich muss da ein != invalid hin.
#Handy
-
C
Alles anzeigenstock IsStaatsFrak(playerid) { switch(Spieler[playerid][pFraktion]) { case 1,2,3,13: return 1; } return 0; } stock GetVehicleHealthIni(vehicleid) { new Float:CarHealth; GetVehicleHealth(vehicleid, CarHealth); return floatround((CarHealth - 250.0) / 7.5, floatround_floor); } stock GetPrivateVehicleOwner(vehicleid) { for(new i=GetPlayerPoolSize(),slot; i!=-1; i--) { for(slot=0; slot<MAX_PLAYER_VEHICLES; slot++) { if(vehicleid == PrivateVehicle[i][slot][vehID]) return i; } } return INVALID_PLAYER_ID; } stock GetPrivateVehicleOwnerSlot(vehicleid,i) { for(new slot; slot<MAX_PLAYER_VEHICLES; slot++) { if(vehicleid == PrivateVehicle[i][slot][vehID]) return slot; } return -1; } ocmd:carinfo(playerid, params[]) { if(!IsStaatsFrak(playerid)) return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION); new veh; if(sscanf(params, "i", veh)) return SendClientMessage(playerid, COLOR_WHITE, "{3592D7}* Benutze {00CC00}/carinfo [vehicleid]"); if(veh > GetVehiclePoolSize() || veh <= 0) return SendClientMessage(playerid, COLOR_WHITE, "Ungültige Vehicleid!"); new Float:Pos[3]; GetVehiclePos(veh, Pos[0], Pos[1], Pos[2]); if(!IsPlayerInRangeOfPoint(playerid, 30.0, Pos[0], Pos[1], Pos[2])) return SendClientMessage(playerid, COLOR_WHITE, "Du befindest dich nicht an diesem Auto!"); new string[256], CarHealthIni = GetVehicleHealthIni(veh),VehicleOwner=GetPrivateVehicleOwner(veh); if(VehicleOwner != INVALID_PLAYER_ID) { new slot = GetVehicleOwnerSlot(veh, VehicleOwner); format(string, sizeof(string), "Allgemeines:\tBesitzer: %s (ID: %d)\n\t\tFahrgestellnummer: %d\n\t\tKennzeichen: %s\n\t\tModel: %s\n\t\tFarbe: %d / %d\n\nSonstiges:\tZustand: %d Prozent\n\t\tTank: %.1f L\n\t\tKilometerstand: %.1f km", PrivateVehicle[VehicleOwner][slot][vehBesitzer], VehicleOwner, PrivateVehicle[VehicleOwner][slot][vehFahrgestell], PrivateVehicle[slot][veh][vehNumberPlate], VehicleName[GetVehicleModel(veh)-400], PrivateVehicle[VehicleOwner][slot][vehColor1], PrivateVehicle[VehicleOwner][slot][vehColor2], CarHealthIni, Vehicle[veh][vehFuel], Vehicle[veh][vehKMStand]); ShowPlayerDialog(playerid, DIALOG_CARINFO, DIALOG_STYLE_MSGBOX, "Fahrzeug Infomationen", string, "Schließen", ""); } else if((VehicleOwner = IsAFraktionsVeh(veh)) != INVALID_PLAYER_ID) { format(string, sizeof(string), "Allgemeines:\tBesitzer: %s\n\t\tFahrgestellnummer: %d\n\t\tKennzeichen: %s\n\t\tModel: %s\n\t\tFarbe: %d / %d\n\nSonstiges:\tZustand: %d Prozent\n\t\tTank: %.1f L\n\t\tKilometerstand: %.1f km", GetVehicleFraktionName(veh), fVehicle[VehicleOwner][vehFahrgestell], fVehicle[VehicleOwner][vehNumberPlate], VehicleName[GetVehicleModel(veh)-400], fVehicle[VehicleOwner][vehColor1], fVehicle[VehicleOwner][vehColor2], CarHealthIni, Vehicle[veh][vehFuel], Vehicle[veh][vehKMStand]); ShowPlayerDialog(playerid, DIALOG_CARINFO, DIALOG_STYLE_MSGBOX, "Fahrzeug Infomationen", string, "Schließen", ""); } else { SendClientMessage(playerid, COLOR_WHITE, "Dieses Fahrzeug hat keinen Besitzer."); } return 1; }So sollte das schon eher funktionieren, vorrausgesetzt IsAFraktionsVeh gibt dir eine eindeutige ID zurück und nicht nur 0 oder INVALID_PLAYER_ID.
-
Pack eventuell unter das PlayerTextDrawSetString mal ein PlayerTextDrawShow.
-
Danke dir für die Mühe, nur leider passiert nix ...
Dann lade mal 1. crashdetect und schaue ob irgendwelche Fehler auftreten

2. Hau in den Timer mal ein print, damit du sicher bist, dass das auch aufgerufen wird

-
Was ein Messi Code...
der stimmt vorne und hinten nicht.
- slot wird nirgends zugewiesen.
-
(VehicleOwner = getVehicleOwner(vehicleid)) != -1 was glaubst du, machst du da?
Ich meine es funktioniert, aber ich glaube nicht aus dem Grund, was du ursprünglich wolltest xD im Endeffekt kannst du auch einfach prüfen ob VehicleOwner == 1 ist
- Das bringt uns zum nächsten Problem, VehicleOwner ist entweder 1 oder -1. Du glaubst aber, es entspricht der playerid vom Besitzer, was nicht der Fall ist
-
Ja...oben im DIALOG_CARKEYS nutzt du z.B.:
SetPVarInt(playerid, "carkey_listitem", listitem);
und unten im DIALOG_FAHRZEUG sagst du:
new id = GetPVarInt(playerid, "carkey_listitem");
DeletePVar(playerid, "carkey_listitem"); -
Das ist doch wieder ein völlig anderer Dialog, das ist doch kein DIALOG_LIST...da kannst du auch kein listitem nutzen.
Was hast du bitte erwartet was da rauskommt bei listitem? Das richtige listitem? Wie soll das bitte funktionieren?
Du verstehst den Code doch, wo soll der plötzlich eine 0-4 herbekommen? Wenn es nur einen Button und nichts zum auswählen gibt.
#RageDu musst das listitem, was er zuvor ausgewählt hat z.B. in einer PVar speichern, dann kannst du das da wiederverwenden.
-
Wie haste es denn geschafft auf ein leeres nicht vorhandenes Feld zu klicken?
Kannst du mal ein Bild vom Dialog machen und zeigen, was du ausgewählt hast?
-
Ja...sowas wie: vehicleid = PrivateVehicle[playerid][id][veh_ID] ;
-
Das liegt daran, dass deine Variable vehicleid immer 0 ist. Du setzt da keinen Wert.
Deshalb wenn GetVehicleModel(0) aufgerufen wird und da 0 keine gültige vehicleid ist, wird hier auch immer 0 zurückgegeben und 0-400 = -400 und dann greifst du auf diesen index zu, der natürlich nicht existiert.
Also vehicleid einen Wert zuweisen und sicher sein, dass das Auto auch existiert

-
Interessant wäre die vollständige Debug Meldung...
Da steht ja nicht einmal ein Fehler..
-
Schau mal hier rein: Schneller & strukturierter skripten
Das könnte dir helfen, dann kannst du dir einiges schenken, wie mehrere Strings, die isLoggedIn Abfrage in jedem Befehl und eine einzelne Auflistung, da solltest du eine Schleife verwenden.
Wie zum teufel, hast du modelid deklariert bzw wie verwendest du das da, so wird das nicht funktionieren.
Und zu deiner Frage, du kannst dann einfach listitem verwenden und dann weißt du, auf welches Fahrzeug er geklickt hat, nämlich:
PrivateVehicle[playerid][listitem][modelid]
-
Du machst dir das viel zu kompliziert.
Die innere Schleife mit dem mInfo ist komplett unnötig, da du ja durch GetVehicleModel doch schon weißt, um welches Model es sich handelt.
C
Alles anzeigenpublic tankLostTimer() { for(new i=GetVehiclePoolSize(); i!=0; i--) { if(!motor[i]) continue; if(tank[i] <= 0) { tank[i] = motor[i] = 0; SetVehicleParamsEx(i, 0, 0, 0, 0, 0, 0, 0); } else tank[i] -= cInfo[i][lpm] / 60; } for(new i=GetPlayerPoolSize(),v,m,string[24]; i!=-1; i--) { if(IsPlayerNPC(i) || !IsPlayerInAnyVehicle(i)) continue; v = GetPlayerVehicleID(i), m = GetVehicleModel(v); format(string,sizeof(string),"%.02f / %.02f",tank[v],mInfo[m][maxTank]); PlayerTextDrawSetString(i, Tacho_TD[i][15], string); } return 1; }Ich glaube so macht das mehr Sinn.
So brauchst du auch keine Schleifen schachteln..weil ja sonst deine Laufzeit extremst wäre..du müsstest ja jedes mal MAX_VEHICLES*MAX_VEHICLES*MAX_PLAYERS durchlaufen...das ist ja Irrsinn.
-