Hast du die Debug Nachrichten noch drin? Wenn ja, poste die bitte. Wenn nicht, mach sie wieder rein und poste sie dann.
Inwiefern das mit dem Löschen aber zusammenhängt kann ich mir nicht erklären.
Beiträge von Jeffry
-
-
Hast du eine mehrzeilige Meldung mit vielen Zahlen im Compiler?
EDIT:
Zwecks dem Interior: Mach, wenn du dich zu dem NPC teleportiert hast mal /interior, was steht dann da? -
http://forum.sa-mp.com/showthread.php?t=557029
Oder du schaust dir dieses Plugin an:
http://forum.sa-mp.com/showthread.php?t=267677 -
//Hier dann das mit dem Interior und die Postion^^
zu:
for(new j=0; j<sizeof(Houses_Data); j++)
{
if(Houses_Data[j][eArt] == Art && Houses_Data[j][eInt] == Inte)
{
hInfo[i][PosX] = Houses_Data[j][eIntX];
//usw...für alle Daten die du übernehmen willst.
break;
}
}Und das enum muss so aussehen:
enum hdIntDaten
{
eArt,
eInt,
Float:eIntX,
Float:eIntY,
Float:eIntZ,
eText[34]
}
new Houses_Data[MAX_HOUSE][hdIntDaten] =
{
{1, 5 , 1261.0065,-785.5643,1091.9063, "17 Zimmer"}//Ist die Art(Groß/Mittel/Klein) Interior XYZ vom Interior
};EDIT:
@_iPit_: Da dein Problem behoben ist, wäre es super, wenn du den Thread als erledigt markierst. Danke!
-
Ok.
Im Befehl:
format(HouseInfo[i][h_owner], 24, "");
zu:
format(HouseInfo[i][h_owner], 24, "-");
Muss halt was drin stehen, da du danach ja abfragst, ob das Haus existiert. -
Mach den Befehl mit der Eingabe und dem Splitten der Eingaben soweit mal fertig wie du es haben willst, dann kann ich dir den Rest entsprechend zeigen.
-
new Float:x, Float:y, Float:z, i, w;
GetPlayerPos(NPC_ID, x, y, z);
GetPlayerInterior(NPC_ID, i);
GetPlayerVirtualWorld(NPC_ID, w);
SetPlayerPos(playerid, x, y, z);
SetPlayerInterior(playerid, i);
SetPlayerVirtualWorld(playerid, w);Schreibe das mal in einen Befehl, dann ersetze NPC_ID mit der ID die der NPC im Server hat und gebe dann den Befehl ein, wenn der NPC verschwunden ist.
Siehst du den NPC dann wieder?
-
Alles klar.
Könntest du uns bitte auch sagen, wie du den Fehler behoben hast?
Hast du das entsprechende Array gefunden, oder war es was anderes? -
Ich sehe da kein Problem.

Kann es sein, dass du das Pickup/Label mehrmals an gleicher Stelle erstellt hast und es somit nicht siehst, dass das Pickup/Label entfernt wurde?
-
Hattest du die Header Size Meldung schon vor dem hinzufügen der pawn.cfg Datei?
-
Dann erstelle im /pawno/ Ordner eine Datei "pawn.cfg" und schreibe "-d3" da rein.
Dann kompiliere deinen Code neu und poste den Log nochmal. -
Ja, klar geht das.
Entweder du splittest die Eingabe (params) mit strtok oder mit sscanf, wie du willst und übergibst es entsprechend anstatt dem switch an die Variablen. -
Erhöhe es auf 100. Je nach dem was der höchste Index ist, mit dem du auf das Array zugreifen willst musst du es entsprechend erhöhen, also so lange bis die Meldung weg ist.
-
Ich rate dir es so zu machen, ist zwar nicht die schönste Variante, aber damit wirst du am ehesten klar kommen, da es genau gleich ist wie sonst auch:
if(hInfo[house][Gekauft] == 1)
{
if(hInfo[house][Lock] != 0)
{
if((!strcmp(SpielerName(playerid), hInfo[house][Mieter1]) && strlen(hInfo[house][Mieter1])) || (!strcmp(SpielerName(playerid), hInfo[house][Mieter2]) && strlen(hInfo[house][Mieter2])) || (!strcmp(SpielerName(playerid), hInfo[house][Mieter3]) && strlen(hInfo[house][Mieter3])) || (!strcmp(SpielerName(playerid), hInfo[house][Besitzer]) && strlen(hInfo[house][Besitzer])))
{
//Nichts, da erlaubt.
}
else
{
return SendClientMessage(playerid, error, "Dieses Haus ist verschlossen. Zutritt nur für Mieter/Bezitzer");
}
}
SetPlayerPos(playerid, hInfo[house][IntX],hInfo[house][IntY],hInfo[house][IntZ]);
SetPlayerInterior(playerid, hInfo[house][IntID]);
SetPlayerVirtualWorld(playerid, hInfo[house][VID]);
return 1;
} -
-
ocmd:kuendigen(playerid, params[])
{
for(new i=0; i<MAX_HOUSE; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, hInfo[i][PosX],hInfo[i][PosY],hInfo[i][PosZ]))
{
if(!strcmp(SpielerName(playerid), hInfo[i][Mieter1]) && strlen(hInfo[i][Mieter1])) return format(hInfo[i][Mieter1], 24, ""), SendClientMessage(playerid, erfolg, "Mieter 1 bye"), SaveAllHouses();
if(!strcmp(SpielerName(playerid), hInfo[i][Mieter2]) && strlen(hInfo[i][Mieter2])) return format(hInfo[i][Mieter2], 24, ""), SendClientMessage(playerid, erfolg, "Mieter 2 bye"), SaveAllHouses();
if(!strcmp(SpielerName(playerid), hInfo[i][Mieter3]) && strlen(hInfo[i][Mieter3])) return format(hInfo[i][Mieter3], 24, ""), SendClientMessage(playerid, erfolg, "Mieter 3 bye"), SaveAllHouses();
return 1;
}
}
return 1;
} -
-
Machs mal so:
if(IsPlayerConnected(i)) PlayAudioStreamForPlayer(i, "***************");Und den Timer startest du wirklich nur ein einziges mal bei OnGameModeInit?
-
Nein, wenn du i==sizeof(tank) machst, dann würde er gar nichts machen, da beim ersten Durchlauf i = 1 ist, und das ist nicht sizeof(tank), sprich die Scheife wird beendet.
Wenn, dann musst du i<=sizeof(tank) machen, allerdings wird dir das beim letzten Durchlauf (i=2000) das Array sprengen, da ein Array[2000] keinen Index 2000 (i) hat, sondern maximal den Index 1999 (0 bis 1999 = 2000).
-