Wie ist bInfo deklariert?
Wie sieht das SELECT Query aus?
Beiträge von Jeffry
-
-
Setze vor if(Mobile[playerid] != 255) bitte mal einen print:
printf("mobile: %d / playerid: %d", Mobile[playerid], playerid);
Was gibt dieser Print aus, wenn du etwas im Handychat schreiben willst?Und bitte nach dem format noch:
printf("text: %s", string); -
Ok, gut.
Vertauschen kann er das aber eigentlich nicht, da du ja beim Betreten nur auf die Exit Position abfragst, somit ist ihm die Position des Pfeils innen egal.Könnte es sein, dass du die Enter/Exit Positionen bei der Bank vertauscht hast? Drehe diese mal um und prüfe ob es dann geht.
-
Setzt du beim Login
SetPVarInt(playerid,"InBuilding",-1);
?Wenn nicht, mache das, sonst ist das 0 zu Beginn, das würde den Fehler erklären, wenn es nur beim ersten Mal auftritt.
-
Stimmen die Koordinaten bei dem Haus? Oder hast du dort vielleicht bei einem zwei mal die gleichen Koordinaten versehentlich drin?
Tritt das nur bei diesem einen Haus auf? -
Wo liegt der Fehler?
Der Thread ist zwar schon gelöst, aber als Erklärung, warum das Problem auftritt: ApplyAnimation darf nicht vor SetPlayerPos stehen.
-
Wie kann ich aus einem Timer auslesen, wieviel Minuten er noch beträgt?
Zum Beispiel so:
Das solltest du so nicht ohne weiteres machen, da die Timer in SA-MP sehr ungenau sind und du somit bei längerer Laufzeit des Timers (mehrere Minuten) falsche Werte angezeigt bekommst.
Entweder du nutzt das TimeFix Include (https://forum.sa-mp.com/showthread.php?t=289675) bzw. Plugin (https://forum.sa-mp.com/showthread.php?t=650736), dann kannst du den Code so nutzen, auch wenn es nicht die sauberste Variante ist.Die Alternative wäre, einen einzigen globalen Timer zu nutzen und diesen jede Sekunde einmal aufzurufen und darin dann solche Variablen abfragen und sobald diese kleiner gleich dem Timestamp sind, die gewünschte Funktion ausführen. Dann sparst du dir die x Timer, die am Laufen sind und hast alles übersichtlich an einer Stelle.
Oder, wenn es nur darum geht, z.B. einen Befehl für eine bestimmte Zeit zu sperren, dann einfach so:
blockedUntil[playerid] = gettime() + 5 * 60; //5 Minuten gesperrt
Und dann:
if(blockedUntil[playerid] > gettime())
{
//Befehl ist noch "remain_min" Minuten und "remain_sec" Sekunden gesperrt.
}Kommt eben drauf an, für was du das brauchst.
-
if(Mobile[playerid] != 255)
Ist richtig.Du musst allerdings folgendes zusätzlich ändern:
Mobile[playerid] = 0;
zu:
Mobile[playerid] = 255;Und, ganz wichtig, bei OnPlayerConnect bzw. beim Login:
Mobile[playerid] = 255;
Sonst ist die Variable initial 0, daher schreibst du dann immer im Handychat. -
Hat es was damit zutun, dass beide Punkte in der Range sind?
Ja.
Versuche es so, das liest den am nächsten liegenden Einstiegs-Punkt aus und nimmt den dann:
if(GetPVarInt(playerid,"InBuilding")!=-1)
{
new e=GetPVarInt(playerid,"InBuilding");
if(IsPlayerInRangeOfPoint(playerid,3.0,Building[e][IX],Building[e][IY],Building[e][IZ]))
{
SetPlayerPos(playerid,Building[e][EX],Building[e][EY],Building[e][EZ]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetPVarInt(playerid,"InBuilding",-1);
return 1;
}
}
else
{
new Float:dist = 3.0, Float:tmp, e = -1;
for(new i; i<sizeof(Building); i++)
{
tmp = GetPlayerDistanceFromPoint(playerid, Building[i][EX],Building[i][EY],Building[i][EZ]);
if(tmp < dist)
{
dist = tmp;
e = i;
}
}
if(e != -1)
{
SetPlayerPos(playerid,Building[e][IX],Building[e][IY],Building[e][IZ]);
if(Building[e][Interior]!=0)SetPlayerInterior(playerid,Building[e][Interior]);
if(Building[e][Welt]!=0)SetPlayerVirtualWorld(playerid,Building[e][Welt]);
SetPVarInt(playerid,"InBuilding",e);
return 1;
}
} -
ConnectNPC("dodo1","dodo1rec");
Das "dodo1rec" unterscheidet sich zum "dodo" in der NPC pwn. Passe das bitte gleichermaßen an.
Bei ConnectNPC muss der Name der pwn Datei angegeben werden, und bei RECORDING der Name der rec Datei. Im besten Fall heißen alle Dateien gleich, um Fehler zu vermeiden.
-
Poste bitte mal den Code der NPC pwn Datei.
-
Erstelle die Dodo bitte mal an der Position 0 0 0, es könnte sein, dass dies auf Grund des integrierten Streamers beim Spawn des NPCs nicht klappt, wenn sie zu weit weg ist, sowas hatte ich auch mal.
-
Steht der NPC irgendwo rum, wenn ja, wo? Oder fliegt er eventuell mit einem anderen Fahrzeug umher?
Lass dir die Position ausgeben oder teleportiere dich zum NPC. -
Soll ich das alte so lassen oder deins übernehmen, beide funktionieren.
Ich bin da bei Douq, die Variablen sind nicht wirklich sprechend, es ist schwer zu sagen, we deine Umsetzung tatsächlich aussehen soll, aber ich vermute, dass es so passt, wie dein Code aktuell aussieht, da du das ja auf zwei Arrays getrennt hast, daher passt der Ansatz von Kaliber für mich auch nicht.
Wenn dein Code funktioniert, dann nutze deinen Code.Kann ich eine easy Abfrage machen ob ein Biz betretbar ist mit dieser Variable?
Ja, das könntest du so machen. Den Index (0, 1, 2) im zugehörigen Array des Biz speichern und entsprechend dem Wert dann den Text dieses Arrays ausgeben.
-
Ändere bitte mal
Tanke[i][tLiterBenzin] += Vehicle[trailer][vehProds]
zu
Tanke[i][tLiterBenzin] = Tanke[i][tLiterBenzin] + float(Vehicle[trailer][vehProds]); -
Ich kann jetzt aber die Virtuelle Welt ID nicht mitnehmen, da hier ja Floats abgespeichert werden, was soll ich tun? 1.0 ?
Sauber wäre es, über ein enum zu arbeiten, dann kannst du mitgeben, welcher Wert Float und welcher Integer ist.
Ansonsten, mit 1.0 und im loop mit floatround den Wert zum Integer "runden". Das wäre die "Quick & Dirty" Lösung. -
Lass das
SetPlayerPos(playerid, 597.4173,-1260.1621,64.1875);
bitte mal weg, geht es dann?
Bist du in der virtuellen Welt 0 und Interior 0?
-
Wie hast du vehProds im enum zu Vehicle deklariert?
-
Ja ich bin in einem Interior mit einer anderen Virtuellen Welt in diesem Fall habe ich die 1 eingetragen
Dann musst du bei Create3DTextLabel auch die 1 nutzen, sonst siehst du das Label nicht. Aktuell hast du dort VirtualWorld = 0 eingetragen.
-
Was wird dir denn ausgegeben, wenn du hier einen print hinzufügst?
new gebraucht = floatround(Tanke[i][tMaxLiterBenzin] - Tanke[i][tLiterBenzin]);
printf("gebraucht: %d", gebraucht);