dass man nur angeln kann wenn man am heck des fahrzeugs
Da kann ich dir die Funktion von IPrototypeI ans Herz legen Nützliche Codeschnipsel
PS: Du fragst derzeit gar nicht nach dem Heck ab, sondern nur nach der Nähe zu einem Fahrzeug.
dass man nur angeln kann wenn man am heck des fahrzeugs
Da kann ich dir die Funktion von IPrototypeI ans Herz legen Nützliche Codeschnipsel
PS: Du fragst derzeit gar nicht nach dem Heck ab, sondern nur nach der Nähe zu einem Fahrzeug.
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.
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:
this_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
Alles anzeigen
Tabelle dazu (Funktionsfähig):
CREATE 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
;
Alles anzeigen
// EDIT Fehler gefunden
this_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
Alles anzeigen
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