Sollte ich dann bspw. in allen enums "Text3D:xyz = Text3D:INVALID_3D_TEXTID," anwenden?
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
-
-
Ja, aber nicht im enum, sondern in einer Schleife bei OnGameModeInit:
for(new i = 0; i < sizeof(array); i++) array[i][label] = Text3D:INVALID_3D_TEXTID;Und zusätzlich dort, wo das Label gelöscht wird:
if(array[i][label] != Text3D:INVALID_3D_TEXTID) Delete3DTextLabel(array[i][label]);
array[i][label] = Text3D:INVALID_3D_TEXTID; -
Und was ist hiermit:
Ein anderes Problem: Neon ist manchmal einfach unter irgendwelchen Autos, was ansich nich sein soll..
Kann mir das alles nicht erklären.
-
Das könnte von einem ähnlichen Problem verursacht werden. Eventuell werden die Fahrzeuge gelöscht und deren Neon dazu aber nicht, oder die Variablen nicht zurück gesetzt.
Wenn du das alles sauber zurück setzt, dann dürfte der Fehler nicht auftreten.
-
Danke.
C
Alles anzeigenstock GetClosestATM(playerid) { new index=-1; for(new Float:max2=9999.0, Float:dis,i;i<sizeof(ATM);i++) { dis = GetPlayerDistanceFromPoint(playerid, ATM[i][atmX], ATM[i][atmY], ATM[i][atmZ]); if(dis < max2)max2 = dis, index=i; } return index; } stock GetClosestPatrol(playerid) { new index=-1; for(new Float:max2=9999.0, Float:dis,i;i<sizeof(Tanke);i++) { dis = GetPlayerDistanceFromPoint(playerid, Tanke[i][tPickupX], ATM[i][tPickupY], ATM[i][tPickupZ]); if(dis < max2)max2 = dis, index=i; } return index; }
Kommt aber:
happyages.pwn(33162) : warning 213: tag mismatch
happyages.pwn(33162) : warning 213: tag mismatchBei beiden "dis = GetPlayer.."
-
Bei beiden "dis = GetPlayer.."
Aber...die Warnung kommt irgendwie nur in einer Zeile?
-
dis = GetPlayerDistanceFromPoint(playerid, Tanke[i][tPickupX], ATM[i][tPickupY], ATM[i][tPickupZ]);
zu
dis = GetPlayerDistanceFromPoint(playerid, Tanke[i][tPickupX], Tanke[i][tPickupY], Tanke[i][tPickupZ]); -
Hmm, hat jemand vielleicht eine Lösung für mein Problem, @Jeffry vielleicht ?
Ich rufe mit einem Befehl eine Top Liste für verschiedene Bereiche ab, alle funktionieren bis auf eins.
So schaut's aus wenn's funktioniert (Top Kills)Und so mit dem was ich als letztes hinzugefügt habe
Ich denke es liegt daran, das ich die Farbe abfragen möchte, die aber in der "players" Tabelle gespeichert ist und die Daten die für die Top-Liste in der "battlestats" gespeichert sind.
Wie könnte ich das jetzt so machen, das er die Farbe von der players Tabelle aufruft, die anderen Daten aber von der Battlestats Tabelle, also von 2 verschiedenen Tabellen?format(cQuery, sizeof(cQuery), "SELECT Name, WonDuels, Color FROM `battlestats` ORDER BY `WonDuels` DESC LIMIT 10");
mysql_query(MySQL, cQuery);
mysql_store_result(); -
Du kannst die beiden Tabellen mit einem LEFT JOIN verbinden.
Siehe hier:
http://www.w3schools.com/sql/sql_join_left.aspMit dem Try it Yourself Editor kannst du das Ganze vorher ausprobieren, damit du das Prinzip verstehst.
-
-
Nein.
Vergleiche das bitte mit dem Beispiel aus dem Link und versuche es entsprechend auszubessern.
Dein Code ist komplett anders, daher versuche es bitte nochmal. -
case DIALOG_ATM:
{
if(response)
{
if(listitem == 0) // Einzahlen
{
strdel(DialogString, 0, sizeof(DialogString));
format(DialogString, sizeof(DialogString), COLOR_HEX_YELLOW"Dein Kontostand beträgt %d$\nGib hier den Betrag ein, den du Einzahlen möchtest.", Spieler[playerid][pBank]);
ShowPlayerDialog(playerid, DIALOG_ATM_ANLEGEN, DIALOG_STYLE_INPUT, "Einzahlen", DialogString, "OK", "Abbrechen");
return 1;
}
if(listitem == 1) // Abheben
{
strdel(DialogString, 0, sizeof(DialogString));
format(DialogString, sizeof(DialogString), COLOR_HEX_YELLOW"Dein Kontostand beträgt %d$\nGib hier den Betrag ein, den du Auszahlen möchtest.", Spieler[playerid][pBank]);
ShowPlayerDialog(playerid, DIALOG_ATM_ABHEBEN, DIALOG_STYLE_INPUT, "Auszahlen", DialogString, "OK", "Abbrechen");
return 1;
}
if(listitem == 2) // Handyladekarte
{
strdel(DialogString, 0, sizeof(DialogString));
format(DialogString, sizeof(DialogString), "1000$\n5000$\n10000$");
ShowPlayerDialog(playerid, DIALOG_ATM_HANDY, DIALOG_STYLE_LIST, "Handyladekarte", DialogString, "Aufladen", "Abbrechen");
return 1;
}
}
}Ich habe eine kleine Frage wen ich jetzt z,b auf Aufladen klicke z,b 1000$ Handykarte soll das Fenster verschwinden und nicht mehr erscheinen bei mir ist der fall wen ich auf 1000$ Handykarte gehe kommt das fenster wider wie kann ich das machen das es dann nicht mehr kommt?
-
case DIALOG_ATM:{ if(response) { if(listitem == 0) // Einzahlen { strdel(DialogString, 0, sizeof(DialogString)); format(DialogString, sizeof(DialogString), COLOR_HEX_YELLOW"Dein Kontostand beträgt %d$\nGib hier den Betrag ein, den du Einzahlen möchtest.", Spieler[playerid][pBank]); ShowPlayerDialog(playerid, DIALOG_ATM_ANLEGEN, DIALOG_STYLE_INPUT, "Einzahlen", DialogString, "OK", "Abbrechen"); return 1; } if(listitem == 1) // Abheben { strdel(DialogString, 0, sizeof(DialogString)); format(DialogString, sizeof(DialogString), COLOR_HEX_YELLOW"Dein Kontostand beträgt %d$\nGib hier den Betrag ein, den du Auszahlen möchtest.", Spieler[playerid][pBank]); ShowPlayerDialog(playerid, DIALOG_ATM_ABHEBEN, DIALOG_STYLE_INPUT, "Auszahlen", DialogString, "OK", "Abbrechen"); return 1; } if(listitem == 2) // Handyladekarte { strdel(DialogString, 0, sizeof(DialogString)); format(DialogString, sizeof(DialogString), "1000$\n5000$\n10000$"); ShowPlayerDialog(playerid, DIALOG_ATM_HANDY, DIALOG_STYLE_LIST, "Handyladekarte", DialogString, "Aufladen", "Abbrechen"); return 1; } }}
Ich habe eine kleine Frage wen ich jetzt z,b auf Aufladen klicke z,b 1000$ Handykarte soll das Fenster verschwinden und nicht mehr erscheinen bei mir ist der fall wen ich auf 1000$ Handykarte gehe kommt das fenster wider wie kann ich das machen das es dann nicht mehr kommt?
zeig mal den case DIALOG_ATM_HANDY:
-
case DIALOG_ATM_HANDY:
{
if(!response){
strdel(DialogString, 0, sizeof(DialogString));
format(DialogString, sizeof(DialogString), "Einzahlen\nAbheben\nHandyladekarte");
ShowPlayerDialog(playerid, DIALOG_ATM, DIALOG_STYLE_LIST, "Bankautomat", DialogString, "Auswählen", "Schließen");
return 1;
} -
Da müsste noch mehr folgen.
@JustMe.77
Hattest du Erfolg dabei?
Falls nein, poste bitte das aktuelle SQL Statement und je einen Screenshot der beiden Tabellen aus der Datenbank (Struktur). -
Hey habe eine kleine frage.
if(IsVehicleATaxi(vehicleid))
{
strdel(DialogString, 0, sizeof(DialogString));
format(DialogString, sizeof(DialogString), COLOR_HEX_WHITE"Du kannst nun den Preis festlegen, den die Fahrgäste jede 10 Sekunden bezahlen\nDer Preis muss mindestens 1$ und maximal 200$ sein.");
ShowPlayerDialog(playerid, DIALOG_TAXI, DIALOG_STYLE_INPUT, "Taxi Company", DialogString, "Weiter", "Aussteigen");
}Unter was muss ich das packen habe das selber geschrieben wen der Spieler in IsVehicleATaxi steigt wen er drinnen sitzt das er den Dialog angezeigt bekommt
-
Fragst bei OnPlayerStateChange ab, ob er als Fahrer in ein Fahrzeug steigt und lässt ihm das anzeigen. @Dr. Frauenarzt
-
case DIALOG_Taxi
{
if(response)
{
if(listitem == 0)
{
UpdateDynamic3DTextLabelText
return 1;
}
if(listitem == 1)
{
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}Ich habe noch eine Frage,
Wen der Spieler jetzt z.b eingibt ihm dialog 0 sollte der
strdel(DialogString, 0, sizeof(DialogString));
format(DialogString, sizeof(DialogString), COLOR_HEX_WHITE"Du kannst nun den Preis festlegen, den die Fahrgäste jede 10 Sekunden bezahlen\nDer Preis muss mindestens 1$ und maximal 200$ sein.");
ShowPlayerDialog(playerid, DIALOG_TAXI, DIALOG_STYLE_INPUT, "Taxi Company", DialogString, "Weiter", "Aussteigen");
wider angezeigt werden wen er über 200$ geht auch wie kann ich das abfragen? -
if(strval(inputtext) < 1 || strval(inputtext) > 200)
{
//...
} -
stock UpdatePlayerTacho(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
new string[128],
vehicleid,
model,
Float:CarHealth,
CarHealthIni,
Float:TankInProzent,
Float:Tank;
vehicleid = GetPlayerVehicleID(playerid);
model = GetVehicleModel(vehicleid);
//GetVehiclePos(vehicleid, Vehicle[vehicleid][vehPosX2], Vehicle[vehicleid][vehPosY2], Vehicle[vehicleid][vehPosZ2]);
if(IsAFahrrad(model))return 1;
TankInProzent = VehicleData[GetVehicleModel(vehicleid)-400][vehMaxTank]/100;
Tank = Vehicle[vehicleid][vehFuel];
GetVehicleHealth(vehicleid, CarHealth);
CarHealthIni = floatround((CarHealth - 250.0) / 7.5, floatround_floor);
if(CarHealthIni < 0) CarHealthIni = 0;
format(string, sizeof(string), "~b~%s: ~w~%d%", VehicleName[GetVehicleModel(vehicleid)-400],CarHealthIni);
PlayerTextDrawSetString(playerid, pTextSpeedo[playerid][3], string);
format(string, sizeof(string), "%d km/h", GetVehicleSpeed(vehicleid));
PlayerTextDrawSetString(playerid, pTextSpeedo[playerid][4], string);
format(string, sizeof(string), "~b~KM-Stand:~w~ %.1f", Vehicle[vehicleid][vehKMStand]);
PlayerTextDrawSetString(playerid, pTextSpeedo[playerid][2], string);
new Float:position = 514.0;
position += Tank/TankInProzent;
PlayerTextDrawTextSize(playerid, pTextSpeedo[playerid][1], position, 0.0);
if(Tank/TankInProzent >= 50 && Tank/TankInProzent <= 100){
PlayerTextDrawBoxColor(playerid, pTextSpeedo[playerid][1], 828254308);
}
if(Tank/TankInProzent <= 49 && Tank/TankInProzent >= 25){
PlayerTextDrawBoxColor(playerid, pTextSpeedo[playerid][1], -945203201);
}
if(Tank/TankInProzent >= 0 && Tank/TankInProzent <= 24){
PlayerTextDrawBoxColor(playerid, pTextSpeedo[playerid][1], -1625941249);
}
PlayerTextDrawShow(playerid, pTextSpeedo[playerid][1]);
format(string, sizeof(string), "~b~Tank: ~w~%d/%d ~b~L", floatround(Tank/TankInProzent));
PlayerTextDrawSetString(playerid, pTextSpeedo[playerid][1], string);
}
return 1;
}Habe eine andere frage,
der Tank wird ja mit 100 L angezeigt. so aber ich möchte machen z.b 100.0/100 L
Wie mache ich das.
"Das ich jedes Auto einstellen kann wv Liter es haben soll