Noch dazu kommt die Kordis sind ja sehr sehr lang kann man die nicht iwie kürzen?
Klar, schreibs so:
-1630.0, 2503.66, -1363.0, 2715.66
Noch dazu kommt die Kordis sind ja sehr sehr lang kann man die nicht iwie kürzen?
Klar, schreibs so:
-1630.0, 2503.66, -1363.0, 2715.66
-2279.9031, -1943.8967, -2279.9031, -2222.6743
Schau mal genau auf die Koordinaten, da kamst du wohl durcheinander mit dem kopieren.
Du hast plötzlich 2x die selbe minX und maxX Koordinate ![]()
So sollte das aussehen...
-2279.9031, -2551.4695, -1943.8967, -2222.6743
und getestet teilweise funktionieren Sie.
Das liegt daran, dass bei einigen die Koordinaten richtig angeordnet sind und bei den Anderen nicht.
minX, minY, maxX, maxY
Das bedeutet, dass minX < maxX sein muss.
Ich denke das ist klar.
Bei dir ist das aber nicht immer der Fall.
Zum Beispiel Angel Pine, da haben wir
minX = -1943.8967
minY = -2551.4695,
maxX = -2279.9031
maxY = -2222.6743
Aber -1943.8967 < -2279.9031 stimmt nicht!
Der min Wert ist größer als der max Wert...daas kann nicht sein
Hier muss ein Fehler sein ![]()
Was mache ich da Falsch die Zwei gebiete die komisch lang und groß sind^^
Die Gebiete, die du uns da zeigst, sind korrekt.
Die beiden langen sind da nicht dabei... ![]()
Ehh kannst du das Enum dazu zeigen? ![]()
Und wie du die Zonen dann erstellst? ![]()
Man kann dir so echt schwer helfen...printe dir halt mal die ganzen Schritte und schau zu welchem Zeitpunkt die Variablen welchen Wert haben, so kannst du dem Fehler auf die Schliche kommen ![]()
Das nennt man Debugging und ist ein gänger Teil des programmierens.
Sehr wichtig, dass man das lernt ![]()
hat einer eine ahnung mit dem fehler
Versuchs mal so:
$array = array('template' => 'bill', 'oldbillid' => '', 'billid' => '', 'price_brutto' => '', 'price_netto' => '');
if(isset($stornoid) AND $stornoid != ''){
$storno = mysqli_fetch_array(mysqli_query($GLOBALS["sql"], "SELECT id, billid FROM ".$GLOBALS['prefix']."finance_bill WHERE billid = '".mysqli_real_escape_string($GLOBALS["sql"], $stornoid)."' LIMIT 1"));
$GLOBALS['CreatPDF'] = LoadCreatePDF($memberid, 'PDF', 'STORNO', $storno['billid'], $storno['id'], $array);
}else{
$GLOBALS['CreatPDF'] = LoadCreatePDF($memberid, 'PDF', 'BILL', $billid, $id, $array);
}
if(isset($GLOBALS['CreatPDF']) AND $GLOBALS['CreatPDF'] == true){
if (file_exists(''.$dir.'pdf/RE/'.$billid.'.pdf')) {
if(isset($stornoid) AND $stornoid != ''){
$array['template'] = 'invoicecancel';
$array['oldbillid'] = $stornoid;
}else{
$array['template'] = 'invoice';
$array['oldbillid'] = $billid;
}
$array['price_netto'] = $sumpricenetto;
$array['price_brutto'] = $sumpricebrutto;
$array['billid'] = $billid;
$cstatus = mysqli_query($GLOBALS["sql"], "INSERT ".$GLOBALS['prefix']."member_contact SET
user = '".mysqli_real_escape_string($GLOBALS["sql"], $member['memberid'])."',
admin = '".mysqli_real_escape_string($GLOBALS["sql"], 'System')."',
email = '".mysqli_real_escape_string($GLOBALS["sql"], $member['email'])."',
array = '".mysqli_real_escape_string($GLOBALS["sql"], json_encode($array))."',
title = '".mysqli_real_escape_string($GLOBALS["sql"], '')."',
text = '".mysqli_real_escape_string($GLOBALS["sql"], '')."',
date = '".mysqli_real_escape_string($GLOBALS["sql"], $paneltimestamp)."',
temp = '".mysqli_real_escape_string($GLOBALS["sql"], $array['template'])."',
status = '".mysqli_real_escape_string($GLOBALS["sql"], '0')."',
active = '".mysqli_real_escape_string($GLOBALS["sql"], '1')."'");
mysqli_query($GLOBALS["sql"], "UPDATE ".$GLOBALS['prefix']."finance_bill SET
cid = '".mysqli_real_escape_string($GLOBALS["sql"], mysqli_insert_id($GLOBALS["sql"]))."'
WHERE id= '".mysqli_real_escape_string($GLOBALS["sql"], $id)."'");
}else{ echo "RECHNUNG EXISTIERT NICHT."; }
}else{ echo "RECHNUNG KONNTE NICHT ERSTELLT WERDEN."; }
$ii++;}
Alles anzeigen
Ich hoffe ihr versteht was ich vor habe
Ja, aber so geht das nicht.
Wenn du Eigenschaften an die modelids der Fahrzeuge knüpfen magst, musst du ein Array für alle erstellen.
Zum Beispiel:
Dann kannst du das direkt nutzen:
new modelid = GetVehicleModel(UnterInfoc[b][Unternehc_car]);
if(modelid == 0) return 0; //Kein gültiges Model
return uc[modelid-400]; //Für Infernus würde 11 zurückgegeben werden, da 411-400 = 11 ist und das der Wert im Array gerade ist
Falls du aber nur bestimmte Informationen für bestimmte Modelids speichern magst, sagen wir es gibt nur Infernus oder was anderes, kannst du auch über switch/case oder einfache if-Abfragen bestimmte Werte für die jeweilige Modelid einfach zurückgeben.
Es kommt darauf an, was du machen magst, das sagst du nicht direkt ![]()
Nun habe ich vor dass man dies auch Mittendrin verlängern kann bloß da weiß ich nicht wie ich das mache.
Ganz einfach, der Timer prüft jede Sekunde, ob (gettime() < var) ist.
Wenn das so ist, kann der Timer gelöscht werden und das Event ausgeführt werden.
Und um das zu verlängern, machst du einfach var += 60*5; Das wären jetzt nochmal 5 Minuten extra, bevor das Event ausgelöst wird ![]()
Gibt es eine Möglichkeit das sich die Objekte unter stock fall2 erstellen in dem er die map unter scriptfiles ausliest?
Natürlich, dafür gibt es sogar schon Includes:
https://forum.sa-mp.com/showthread.php?t=519790
https://forum.sa-mp.com/showthread.php?t=239465
https://forum.sa-mp.com/showthread.php?t=176461
Aber generell rate ich dir davon ab, da das sehr rechenintensiv ist.
Wenn du die Maps schon alle hast, kannst du diese auch in ein Include packen und dann in der Funktion fall2 nur die Funktion aus dem Include aufrufen, die das dann alles erstellt.
Dann kannst du es auch kontrolliert wieder löschen etc.
Das ist im einiges effizienter und einfacher ![]()
public fall2bewegen()
{
new r = random(FALL2O);
if(IsValidObject(fall2obj[r]))
{
MoveObject(fall2obj[r],x,y,z,speed);
SetTimerEx("@dFall2",1000*3,0, "i",r);
}
}
@dFall2(i);@dFall2(i) {
DestroyObject(fall2obj[i]);
return 1;
}
Alles anzeigen
Oder du nutzt OnObjectMoved für eine präzisere Zeitbestimmung.
Hmm keine Ahnung was du da machst, aber an dem Code liegt es nicht.
Ich kann ihn ohne Probleme compilen.
Klammer die Zeile mal aus, geht es dann?
Das ist nicht soo leicht und je nach Anwendungsfall würde ich da anders vorgehen.
Kannst du uns ein wenig Code zeigen, wie du das bisher machst?
Dann kann man dir evtl besser zeigen, wie es auszusehen hat ![]()
was die Standardwerte sind
Wenn nichts gesetzt wurde, sind die Standard-Werte immer 0. Sowohl beim Interior, als auch der virtuellen Welt ![]()
Wie kann ich aus einem Timer auslesen, wieviel Minuten er noch beträgt?
Direkt...gar nicht ![]()
Aber du kannst den Timestamp nehmen, wenn du ihn startest.
Zum Beispiel so:
//Oben im Skript
new timerTimestamp;
//Da wo du den Timer startest:
timerTimestamp = gettime()+60*10;
SetTimer("bla", 1000*60*10, 0);
//Wenn du wissen magst, wie lang es noch dauert:
new diff_secs = (timerTimestamp - gettime());
new remain_h = floatround( diff_secs / 60 * 60 );
new remain_min = floatround( diff_secs / 60 );
new remain_sec = diff_secs % 60;
printf("Noch %02d Stunden, %02d Minuten und %02d Sekunden, bis der Timer fertig ist!",remain_h,remain_min,remain_sec);
Alles anzeigen
Wo liegt der Fehler?
Wenn du den Spieler freezt, kann er keine Animation ausführen.
Musst die Animation ausführen einfach nur, dann kann er sich auch nicht bewegen ![]()
Könnt ich dann eigentlich auch an den Korb ne Leiter ranattachen und mit nem befehl die leiter + Korb ausfahren lassen wie bei ner drehleiter?
Naa klar, das geht mit https://wiki.sa-mp.com/wiki/AttachObjectToObject ![]()
Das mit dem ausfahren lässt sich auch realisieren, ist aber etwas komplizierter, da wenn es Attacht ist glaube nicht gemovt werden kann.
Also entweder moven, bevor du es attachst oder schritt für schritt neu attachen mit neuen relativen Positionen.
Edit: Wie würde ich eigentlich die Position des Feuers bekommen, wo der Korb hinfahren soll?
Na, irgendwie wird ja das Feuer erstellt? ![]()
Und diese Koordinaten musste nur speichern und fertig.
Oder du suchst nach dem nähsten Feuer in der Nähe und nimmst diese Koordinaten ![]()
Ist es möglich, einen Korb (gemappt oder Objekt ist egal) mit einer Person darin vor einem Haus hochzufahren als wäre es ne Drehleiter ohne das die Person durch den Korb fällt? Bzw. wie bringe ich dann den Korb (mit Leiter Objekt) zum Feuer?
Ich verstehe die Frage nicht so ganz, also die Antwort ist natürlich ein einfaches Ja.
Du erstellst das Objekt mit CreateObject und dann nutzt du einfach MoveObject um zu dem Feuer zu kommen (davon hast du ja die Positionen).
PS: Ja, für alle Pedanten, natürlich sollte CreateDynamicObject und MoveDynamicObject verwendet werden.
Normalerweise, solange der Speed bei MoveObject, jetzt nicht in enorme Höhen steigt, solltest du nicht durch das Objekt fallen ![]()
Warum kommt die Nachricht doppelt?
Wegen dem return 1; in der Schleife.
Ich empfehle es dir einfach so zu schreiben:
public OnPlayerText(playerid, text[])
{
new String[144];
format(String, sizeof(String), "%s "HTML_WEIS": %s", Spieler[playerid][pName], text);
SendRangeMessage(playerid, GetPlayerColor(playerid), CHAT_RADIUS, String);
return 0;
}
stock SendRangeMessage(playerid, color, Float:range, const msg[])
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
for(new i=GetPlayerPoolSize(); i!=-1; i--)
{
if(IsPlayerInRangeOfPoint(i, range, X, Y, Z)) SendClientMessage(i, color, msg);
}
return 1;
}
Alles anzeigen