Sollte mit SetVehicleVelocity problemlos klappen, dort müsstest du wohl einen oder beide der ersten Parameter leicht erhöhen (0.5 o.Ä.) dann sollte dies nach meinem Kenntnisstand für einen kleinen Boost reichen.
Beiträge von Whice
-
-
Moin, viel Spaß bei uns
-
So müsste es gehen wenn ich mich nicht irre
Auch das wird schwierig, da in Zeile 8 Variablen erstellt werden, die allerdings nicht gefüllt werden (_fid, _rang, _fmodel, _color). Diese müssten, so wie es die Nachricht besagt auch in Zeile 5 abgefragt werden.
Es wird kein Fahrzeug erstellt
Dann wäre es sinnvoll, wenn du uns mal die Funktion zeigst, die das Fahrzeug erstellt. (createFactionVehicle)
Weiterhin hast du einige Dopplungen in deinem Code: So liest du beispielsweise in Zeile 5 _varname aus, fragst die in Zeile 6 ab und liest sie nochmals in Zeile 8 aus.
Zusätzlich würde es beispielsweise beim Löschen auch Sinn ergeben fracveh_VehID zurückzusetzen, da du diese zur Abfrage verwendest und sich ggf. dopplen könnte und so Fehler entstehen (DestroyVehicle auf ein falsches Fahrzeug aufrufen)
-
Finde meinen SQL Fehler nicht, hoffe das mich dabei jemand unterstützen kann.
Ziel der Prozedur:
- Ausführung: CALL storage_transfer(item_id, amount, from_Storage, into_Storage)
- amount von der Ausgangs-Storage (from_storage) abziehen
- Falls dann 0 wäre - Eintrag komplett löschen
- Falls über 0 wäre - Neuer Amount vom existierenden Amount abziehen
- Falls amount mehr ist als exisitierender Amount - Prozedur abbrechen
- amount in den neuen Storage (into_storage) hinzufügen
- Falls Eintrag nicht exisitiert - Eintrag erstellen
- Falls Eintrag exisiert - Neuer Amount vom existierenden Amount entfernen
- Vorher zu Prüfen:
- Ob übergebener amount < 0 oder > 99 - dann Prozedur abbrechen
- Wenn nicht weitermachen
SQL: storage_transfer (Prozedur mit Fehlern)
Alles anzeigenthis_proc:begin START TRANSACTION; BEGIN IF amount <= 0 OR amount >= 99 THEN LEAVE this_proc; END IF IF EXISTS (SELECT `amount` AS AM FROM `storage_items` WHERE SI.`storage_id` = from_storage AND SI.`item_id` = item_id) THEN IF AM < amount THEN LEAVE this_proc; ELSE IF AM = amount THEN DELETE FROM `storage_items` WHERE SI.`storage_id` = from_storage AND SI.`item_id` = item_id; ELSE UPDATE `storage_items` as SI SET SI.`amount` = SI.`amount` - amount WHERE SI.`storage_id` = from_storage AND SI.`item_id` = item_id; END IF ELSE LEAVE this_proc; END IF IF EXISTS (SELECT `amount` AS AM FROM `storage_items` WHERE SI.`storage_id` = into_storage AND SI.`item_id` = item_id) THEN UPDATE `storage_items` as SI SET SI.`amount` = SI.`amount` + amount WHERE SI.`storage_id` = into_storage AND SI.`item_id` = item_id; ELSE INSERT INTO `storage_items` (`item_id`, `storage_id`, `amount`) VALUES (item_id, into_storage, amount); END IF END COMMIT WORK END
Tabelle dazu (Funktionsfähig):
SQL: storage_items (Funktionsfähige Ausgangstabelle)
Alles anzeigenCREATE TABLE `storage_items` ( `item_id` INT(11) NOT NULL, `storage_id` INT(11) NOT NULL, `amount` INT(11) NOT NULL DEFAULT '1', INDEX `FK__items` (`item_id`) USING BTREE, INDEX `FK__storages` (`storage_id`) USING BTREE, CONSTRAINT `FK__items` FOREIGN KEY (`item_id`) REFERENCES `items` (`id`) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT `FK__storages` FOREIGN KEY (`storage_id`) REFERENCES `storages` (`id`) ON UPDATE CASCADE ON DELETE CASCADE ) COMMENT='all item informations' COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ;
// EDIT Fehler gefunden
SQL
Alles anzeigenthis_proc:begin START TRANSACTION; SELECT IFNULL(`storage_items`.`amount`, -999) INTO @c1 FROM `storage_items` WHERE `storage_items`.`item_id` = item_id AND `storage_items`.`storage_id` = from_storage; SELECT IFNULL(`storage_items`.`amount`, -999) INTO @c2 FROM `storage_items` WHERE `storage_items`.`item_id` = item_id AND `storage_items`.`storage_id` = into_storage; select CONCAT('** ', @c1) AS '** old amount (c1):', CONCAT('** ', @c2) AS '** old amount (c2):', CONCAT('** ', amount) AS '** amount:', CONCAT('** ', from_storage) AS '** from_storage:', CONCAT('** ', into_storage) AS '** into_storage:', CONCAT('** ', item_id) AS '** item_id:'; IF @c1 - amount < 0 THEN LEAVE this_proc; ELSEIF @c2 - amount = 0 THEN DELETE FROM `storage_items` WHERE `storage_items`.`storage_id` = from_storage AND `storage_items`.`item_id` = item_id; ELSE UPDATE `storage_items` SET `storage_items`.`amount` = `storage_items`.`amount` - amount WHERE `storage_items`.`storage_id` = from_storage AND `storage_items`.`item_id` = item_id; END IF; IF @c2 + amount <= 0 THEN LEAVE this_proc; ELSEIF @c2 = -999 THEN INSERT INTO `storage_items` (`item_id`, `storage_id`, `amount`) VALUES (item_id, into_storage, amount); ELSE UPDATE `storage_items` SET `storage_items`.`amount` = `storage_items`.`amount` + amount WHERE `storage_items`.`storage_id` = into_storage AND `storage_items`.`item_id` = item_id; END IF; COMMIT WORK; END
-
-
Und damit Glückwunsch an TeamSpeak fürs 20. Jubiläum: thankyou20 pasted-from-clipboard.png
-
Was könnte das sein?
Erstmal alles.
Bei solchen Problemen würde ich anfangen die einzelnen Variablen zu debuggen und zu schauen, ob dies auch die richtigen Werte sind.
Weiterhin macht es immer Sinn zu schauen, ob irgendwas nicht ausgeführt wird (Beispielsweise die mysql query)
-
Klar, dazu kannst du einfach Color embedding nutzen. Hier der Wiki Eintrag dazu: https://team.sa-mp.com/wiki/Colors_List.html#Color_embedding
-
allerdings setzt in meinem Code er das Adminlevel trozdem obwohl der name nicht übereinstimmt
Das liegt daran, dass wenn beide Strings übereinstimmen (also die ausgabe von strcmp 0 ist), du die Nachricht "Was glaubst du wer du bist" sendest.
Es reicht nun also das ganze zu invertieren, also das ! vorne weg und hinten ran != 0
//EDIT
Hier dazu mal die Zeile, da die Nachricht etwas unübersichtlich ist -
Um Strings zu vergleichen kannst du die strcmp Methode nutzen: https://team.sa-mp.com/wiki/Strcmp_DE.html
Im Wiki ist dies meiner Meinung nach sehr gut erklärt, falls da aber noch Fragen sind hau gern raus
-
Moin,
wenn du einen Fehler in einer Query hast, sollte sich im Normalfall eine extra Datei erstellen (mysql_log o.Ä.) dort siehst du immer direkt den Fehler.
In deinem Fall ist nun ein Fehler in deiner Update-Anfrage passiert. Vor dem WHERE darf kein , mehr kommen, dies also einfach entfernen.
Für die Zukunft kann ich dir auch immer Validatoren empfehlen. Beispielweise diesen hier: https://www.eversql.com/sql-syntax-check-validator/
-
Whice Habe das OnePlus Nord seit release und muss sagen ist immer noch Top das Handy. Akku hat kein bisschen nachgelassen und rennt wie sonst was
Performance ist ebenfalls 1A . Denke mal das wird bei dem Nord CE nicht anders sein^^
Hört sich ja recht gut an, hatte vorher das Oppo A91, was ich auch sehr gut fand. Wollte mich nun aber mal vom 2k Bildschirm und den 12 GB Ram flashen lassen
-
-
Mal gucken wie es wird
-
Moin gude
Triggert aber schon gut mit dem Bild in deiner Signatur
-
-
Hast du denn mal geguckt ob du was unter dem Port laufen hast, damals war skype oft nen Problem oder vielleicht ein anderer mysql server?
-
Langsam reicht es denn auch mal, die Fragestellung war 2017 mal, welche Funktionen ein UCP haben soll, da seit 4 Jahren keiner mehr auf das Thema eingegangen, ist das Thema beendet.
-
Die PietSmiet's haben nun auch ihr eigenens Badge: PIETSMIET
-
Zweite Impfung erledigt ✅
Bei mir stehts erst in ner Woche an, stört dich das leuchten im Dunkeln eigentlich sehr?