Was wird für den anderen Spieler bei den prints ausgegeben?
Ändere zur Identifikation der playerids den print zu:
printf("playerid: %d // Fraktion %d == GFOwnerID %d || == GFGegnerID %d", playerid, Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);
Beiträge von Jeffry
-
-
Willkommen auf Breadfish!
Versuche es so:
ocmd:pflanzen(playerid)
{
new Float:x, Float:y, Float:z, Float:rot, name[MAX_PLAYER_NAME],string[100],Text3D:drogenlabel;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid,rot);
GetPlayerName(playerid, name, sizeof(name));
CreateObject(19473, x, y, z -1.5, 0.0, 0.0, 0.0, 0.0);
format(string,sizeof(string), "Drogenpflanze von: %s \n ", name);
format(string,sizeof(string), "%sDiese Pflanze braucht noch 6.",string);
drogenlabel = Create3DTextLabel(string,Gelb,x,y,z,5,0,0);
SetTimerEx("DrogenTimer", 1000, false, "ddd", _:drogenlabel, 6, playerid);
return 1;
}forward DrogenTimer(label, time, playerid);
public DrogenTimer(label, time, playerid)
{
new name[MAX_PLAYER_NAME], string[100];
time--;
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string), "Drogenpflanze von: %s \n ", name);
format(string,sizeof(string), "%sDiese Pflanze braucht noch %i.",string,time);
Update3DTextLabelText(Text3D:label, Gelb, string);
if(time > 0) SetTimerEx("DrogenTimer", 1000, false, "ddd", label, time, playerid);
else
{
format(string,sizeof(string), "Drogenpflanze von: %s \n ", name);
format(string,sizeof(string), "%sDiese Pflanze ist fertig.",string);
Update3DTextLabelText(Text3D:label, Gelb, string);
}
return 1;
}Edit: (Post unten)
Lui: Oh ja, ist behoben. Gerne
-
Wie startest du den Timer?
-
mysql_format(dbhandle, query, sizeof(query), "SELECT * FROM `users` WHERE `name`='%s", GetName(playerid));
zu:
mysql_format(dbhandle, query, sizeof(query), "SELECT * FROM `users` WHERE `name`='%s'", GetName(playerid));Übrigens kannst du in mysql_format auch %e anstatt %s nutzen, dann sparst du dir die escape Funktion.
-
Und was ist jetzt der Fehler?

-
forward GangfightUpdate(playerid);
public GangfightUpdate(playerid)
{
new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
for(new i = 0; i < sizeof Gangzonen; i++)
{
printf("Fraktion %d == GFOwnerID %d || == GFGegnerID %d", Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);
if(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID])
{
printf("i: %d", i);
if(Gangzonen[i][GFOwnerID] != -1) format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
else format(OwnerText,sizeof(OwnerText),"Niemand");
printf("OwnerText: %s", OwnerText);
if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
else format(GegnerText,sizeof(GegnerText),"Niemand");
printf("GegnerText: %s"; GegnerText);
format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
printf("GZName: %s"; GZName);
format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
printf("GZFZeit: %s", GZFZeit);
format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
printf("a: %s", Af);
printf("c: %s", Bf);
printf("a: %s", Cf);
format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
printf("OwnerPoints: %s", OwnerPoints);
printf("GegnerPoints: %s", GegnerPoints);
UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
}
}
return 1;
}
Debugge es so, der andere Debug ist fehlerhaft. -
Hast du auch einen Code und eine Erklärung was das Problem ist? Die Verlinkung auf den Thread bringt nicht viel.
-
Weiß du, so kann ich dir nicht weiterhelfen, da du ständig irgendwas anderes sagst. Zuerst war es ein Fehler, dass "Ungültige ID 0" kommt, dann war es der Dialog, dann war der Checkpoint nicht da, dann war er kurz da und wieder weg, jetzt fehlt der zweite Checkpoint, du sagst jedes mal was anderes. So kann ich das Problem nicht nachvollziehen, sprich keinen Lösungsvorschlag geben.
Mache bitte ein Video, beginnend ab dem Zeitpunkt an dem du spawnst und gehe die Schritte durch die du machst. Dann sehen wir, was passiert. -
Kannst du das bitte leserlich posten?
Damit nicht alles in einer Zeile steht, nutze den PAWN-Tag im Quellcode-Modus (über der Schriftart, anstatt den Editor). -
Nutzt du die Standard-Class-Selection von SA-MP?
-
getFreeHouseID()
{
for(new i=0; i<sizeof(HouseInfo); i++)
{
if(HouseInfo[i][hID] == 0) return 1;
}
return 1;
}
zu:
getFreeHouseID()
{
for(new i=0; i<sizeof(HouseInfo); i++)
{
if(HouseInfo[i][hID] == 0) return i;
}
return -1;
}new id = getFreeHouseID();
zu:
new id = getFreeHouseID();
if(id == -1) return 1; -
ocmd:report(playerid, params[])
{
for(new i=0;i<30;i++) if(ReportListitem[i][rID][0] == playerid) return SendClientMessage(playerid,GRAU,"Du hast bereits einen Report offen.");
if(!strlen(params) || strlen(params) > 90)
{
return SendClientMessage(playerid,GRAU,"Du musst schon etwas eingeben./Du kannst nicht mehr als 90 Zeichen benutzen.");
}
else
{
for(new i=0;i<30;i++)
{
if(ReportListitem[i][rID][0] == -1)
{
SendClientMessage(playerid,0x37FF00FF,"Deine Frage:");
format(string,sizeof(string),"%s",params);
SendClientMessage(playerid,0x37FF00FF,string);
SendClientMessage(playerid,0x37FF00FF,"Du kannst das Ticket mit ´/sreport´ beenden/löschen.");
format(string,sizeof(string),"Spieler: %s (ID:%i) hat eine Frage/Problem(/tickets)",SpielerName(playerid),playerid);
SendAdminMessage(0xFF7B00FF,string);
Spieler[playerid][pAReport] = 1;
Spieler[playerid][pWriteReport][0] = true;
UpdateReportTextdraw();
ReportListitem[i][rText][0] = gettime();
strmid(ReportListitem[i][rText][0],params,0,strlen(params),90);
ReportListitem[i][rID][0] = playerid;
ReportListitem[i][rAccepted][0] = true;
return 1;
}
}
SendClientMessage(playerid,GRAU,"Du kannst momentan keinen Report (Fragen) absenden.");
}
return 1;
}
So? -
Letzteres kann auch mit einem Timer gelöst werden. Du müsstest es halt mit einem Timer immer wieder kurz reparieren und brennen lassen, dann dürfte es ewig brennen.
-
ocmd:report(playerid, params[])
{
if(!strlen(params) || strlen(params) > 90)
{
return SendClientMessage(playerid,GRAU,"Du musst schon etwas eingeben./Du kannst nicht mehr als 90 Zeichen benutzen.");
}
else
{
for(new i=0;i<30;i++)
{
if(ReportListitem[i][rID][0] == -1)
{
SendClientMessage(playerid,0x37FF00FF,"Deine Frage:");
format(string,sizeof(string),"%s",params);
SendClientMessage(playerid,0x37FF00FF,string);
SendClientMessage(playerid,0x37FF00FF,"Du kannst das Ticket mit ´/sreport´ beenden/löschen.");
format(string,sizeof(string),"Spieler: %s (ID:%i) hat eine Frage/Problem(/tickets)",SpielerName(playerid),playerid);
SendAdminMessage(0xFF7B00FF,string);
Spieler[playerid][pAReport] = 1;
Spieler[playerid][pWriteReport][0] = true;
UpdateReportTextdraw();
ReportListitem[i][rText][0] = gettime();
strmid(ReportListitem[i][rText][0],params,0,strlen(params),90);
ReportListitem[i][rID][0] = playerid;
ReportListitem[i][rAccepted][0] = true;
return 1;
}
}
SendClientMessage(playerid,GRAU,"Du kannst momentan keinen Report (Fragen) absenden.");
}
return 1;
} -
Kannst du, von dem was du machst und wie das dann aussieht mal ein Video machen und das posten, damit ich das nachvollziehen kann, was du das sagst? Mir kommt das nämlich etwas komisch vor, ich kann es am Code nicht wirklich nachvollziehen, dass das so passiert.
Gegebenenfalls gibt das dann die Möglichkeit, dass wir die richtige Stelle mal debuggen, weil beim ursprünglichen Debug hat ja alles gepasst. -
SetPlayerVirtualWorld(playerid,i);
Zu
if(i%2 == 0) SetPlayerVirtualWorld(playerid,i);
else SetPlayerVirtualWorld(playerid,0);Davon ausgegangen, dass du im Array immer erst Eingang und dann Ausgang hast.
Die Alternative wäre:
SetPlayerVirtualWorld(playerid,((i+1)%2)*i);Das hat den gleichen Effekt.
% = Modulo http://www.mathe24.net/modulo.html
-
Das passt soweit. Das einzige was sein kann ist, dass die Variable des Skins noch auf 0 ist. Wie setzt du dem Spieler denn seinen Skin? Nur mit SetPlayerSkin oder setzt du dort die Variable auch auf die Skin ID? Wenn nicht, mach das.Shinoda:
Adlerauge!
Peinlich, dass man manchmal den Wald vor lauter Bäumen nicht sieht. Das ist mir überhaupt nicht in den Sinn gekommen, dass die Reihenfolge falsch sein könnte. Danke für die Korrektur. -
Füge das bei OnPlayerSpawn ein:
SetPlayerSkin(playerid,SI[playerid][skins]);Falls er nicht gespeichert wird, zeige den Code mit dem du ihn speicherst.
-
Bei username mussten auch noch die Hochkommater entfernt werden.
Genau, entweder ohne, oder mit den schrägen Hochkommas: `username`
Das ist die sichere Variante, weil zum Beispiel Alter ist ein SQL Befehl, da geht es nur mit `Alter`.Aber gut, dass du auch drauf gekommen bist!
PS: Schau dir deine Posts bitte vorher an, und entferne solche Voll-Zitate.
-
Das siehst soweit gut aus.
Bist du sicher, dass das Passwort von "Pitcher" auch "morgen" ist?Registriere mal ein neues Konto und schau dir den MD5 Wert in der Datenbank an. Vergleiche ihn mit dem was hier ausgegeben wird: http://www.md5-generator.de/
Ist das das Gleiche?Alternativ, nimm zum Testen das MD5 mal raus und schaue ob es dann geht (nur zum testen).