Diese Funktion gibt es analog nicht mehr. Nutze stattdessen die cache_get_value... Funktionen.
https://wiki.sa-mp.com/wiki/MySQL/R40
Beiträge von Jeffry
-
-
-
mysql_get_field
https://wiki.sa-mp.com/wiki/MySQL/R40#cache_get_value_name
mysql_retrieve_row
Das gibt es so nicht mehr. Das wäre in etwa dann jetzt https://wiki.sa-mp.com/wiki/MySQL/R40#cache_get_row_count
Eine Übersicht über den Code-Aufbau mit MySQL R41-4 findest du hier: https://breadfish.de/index.php…ung-registrations-system/
-
[wiki]TextDrawHideForPlayer[/wiki]
-
Nein, 4, weil dein Case 2 ja 2+3 öffnet.
Immer das returnen, welchen Case du ansprechen willst. -
Wie geht das denn anders
Zeile 5 zu return 2.
prntscr.com/ne6avq,
Achso, die Abfrage ob i == -1 ist nach direkt new i = GetDoorPos(playerid); setzen.
-
rgendwie sagt er mich, dass die Tür bereits geöffnet ist, aber nur bei Case 2.
Du hast im GetDoorPos zwei mal return 1 stehen.
Kann ich irgendwie abfragen, ob der Spieler in der Range von allen GetDoorPos is, damit ich eine return message mit einbauen kann, ansonsten kriege ich Errors, wenn ich nicht in der nähe die Sachen abfrage.
Warum bekommst du sonst Errors? Der Spieler kann ja eigentlich nur im Umkreis einer Tür sein.
-
Das ganze passiert nur, wenn ich bei Case 2 nicht i sondern die richtigen Zahlen von der Tür eintrage.
Anstatt 2 und 3, trage i und i+1 ein.
-
Das ist normal und tritt auf Grund der Latenz (abhängig vom Ping) bei allen Set/Get Funktionen auf.
Es macht auch eigentlich keinen Sinn, direkt nach Set die zugehörige Get Funktion zu nutzen, den Wert weißt du ja auch ohne Get, du hast ihn ja zuvor gesetzt. Ich verstehe den Sinn deiner Abfrage nicht.
printf("SetPlayerHealth %f", hp);
Würde ebenfalls gehen und ein korrektes Ergebnis ausgeben. -
Sorry, stimmt, im else Teil passt es nicht. Dann vor Zeile 3:
if(Building[e_id][IsInteriorClosed] == 1) return SendClientMessage(playerid, 0xFF0000FF, "[Error] Dieses Interior ist gesperrt.");hier möchte ich das Building Nummer 3 schließen.
Das passt so.
-
Im else Teil:
if(Building[i_id][IsAllowedToEnter] != 1) return SendClientMessage(playerid, 0xFF0000FF, "[Error] Dieses Interior ist gesperrt."); -
Irgendwie setzt er die Interior-Welt beim Austritt vom Y in das X Interior nicht auf 0
Entferne die if Abfrage vor SetPlayerInterior, ebenso bei der virtuellen Welt.
-
Ist die BuildingID dann 0 oder 1 ?
Die ID von X, also 0.
-
tag mismatch in Zeile 1. und 13.
Schreibe in Zeile 1 vor das i_dist noch "Float:".
Also, alle Gebäude sind beim EBuilding auf -1, außer das eine Gebäude das hat eine 1 kann ich dann beim 2. Gebäude dort 2 hinschreiben usw. die Aufzählung halt?
Bei EBuilding schreibst du die Building ID rein, in der man ist, wenn man das Building verlässt. Wenn man nach verlassen in keinem mehr ist, dann -1, wenn das Verlassen in ein anderes Building führt, dann diese ID.
-
Ja, diese musst du neu aufnehmen.
Du benötigst hier jeweils die Informationen von Interior und Welt für dein Ein- und Ausgang, nimm diese noch ins Array mit auf.
Heißt, im Array musst du jeweils das Interior und die Welt vom Eingang und zusätzlich auch vom Ausgang angeben. -
Test:
https://breadfish.de/index.php…icht-mehr-aufgel%C3%B6st/Kann es sein dass du bei manchen Links das http:// mit kopierst und bei manchen nicht?
Nein, immer mit https aus der Adresszeile.
-
Könnte ich auch so abfragen ob ein Spieler in einem Gebäude ist? Will nur wissen ob das machbar wäre.
Ja, dann würde ich es dir so vorschlagen:
new Float:e_dist = 3.0, i_dist = 3.0, Float:tmp, e_id = -1, i_id = -1;
for(new i; i<sizeof(Building); i++)
{
tmp = GetPlayerDistanceFromPoint(playerid, Building[i][EX],Building[i][EY],Building[i][EZ]);
if(tmp < e_dist)
{
e_dist = tmp;
e_id = i;
}
tmp = GetPlayerDistanceFromPoint(playerid, Building[i][IX],Building[i][IY],Building[i][IZ]);
if(tmp < i_dist)
{
i_dist = tmp;
i_id = i;
}
}
if(e_dist < i_dist)
{
SetPlayerPos(playerid,Building[e_id][IX],Building[e_id][IY],Building[e_id][IZ]);
if(Building[e_id][IInterior]!=0)SetPlayerInterior(playerid,Building[e_id][IInterior]);
if(Building[e_id][IWelt]!=0)SetPlayerVirtualWorld(playerid,Building[e_id][IWelt]);
SetPVarInt(playerid,"InBuilding", e_id);
}
else
{
SetPlayerPos(playerid,Building[i_id][EX],Building[i_id][EY],Building[i_id][EZ]);
if(Building[i_id][EInterior]!=0)SetPlayerInterior(playerid,Building[i_id][EInterior]);
if(Building[i_id][EWelt]!=0)SetPlayerVirtualWorld(playerid,Building[i_id][EWelt]);
SetPVarInt(playerid,"InBuilding", Building[i_id][EBuilding]);
}Du benötigst hier jeweils die Informationen von Interior und Welt für dein Ein- und Ausgang, nimm diese noch ins Array mit auf.
Außerdem benötigst du das EBuilding, das wäre die ID des Buildings, in das man kommt, wenn man den Ausgang des vorherigen Buildings nimmt.
Sprich, bei dir wäre das immer -1, außer bei dem einen Building, in das du nur durch ein anderes Building kommst, da wäre es die ID des Buildings, durch das man in dieses Building kommt. -
Was ist hier der schlauste Weg? Ich setzte ja den PVar, dass der Spieler in einem Gebäude ist.
Das solltest du dann gar nicht machen und grundsätzlich beide Positionen (Ein- und Ausgang) abfragen.
Je nach dem wo er am nächsten steht, setzt du ihm die Position an die andere Position.Das Speichern der PVar würde ich in dem Fall gar nicht machen, bzw. auf das musst du sogar vollständig verzichten, da sonst das "Weiterspringen" von einem Interior in das nächste nicht klappen wird.
Vom Code her:
Zwei mal die Schleife wie ich sie dir gegeben habe, speichere die Distanz in zwei unterschiedliche Variablen, sowie die ID und frage nach den beiden Schleifen ab, welche Distanz kleiner ist und setze den Spieler dann am die dazugehörige Position zur dazugehörigen ID (wenn Interior-Distanz kleiner, dann zur Außgang-Position, und wenn Außgang-Distanz kleiner, dann zur Interior-Position). -
Füge nach dem INSERT INTO Query folgende Zeile ein:
TogglePlayerSpectating(playerid,0); -
Also ich sehe das Problem nicht? Bei mir scheint es zu klappen.
Hier passt es jetzt auch, eventuell ist seegras schon dran.
Siehe hier:https://breadfish.de/index.php…ostID=2341156#post2341156
EDIT:
Bzw auch an diesem Post selbst, der Link oben.