Das chrashdetekt Plugin sagt mir nix wenn es vorkommt
An Recorcen habe ich auch so sparsam wie Moeglich gehalten
Die Amy ist nur ziemlich Gros da ich max_vehicles verwendet habe
Und ich hab's auch mal Grunderneuert aber geholfen hat es auch nicht wirklich
Beiträge von Beavis
-
-
Bei den Häusern etc alles Ohne Probleme nur bei Spielern ist es so
//e
Nach mehreren Versuchen es auch mit dern Funktionen von Maddin zu machen, tritt das Problem auch auf -
wenn ich es einzeln speicher kommt es auch vor
Ich frag mich nur wiso er die werte ingame verschiebt
es ist ja kein Fehler vorhanden und ich war nicht der einzigste der es nachgeprüft hat -
Resetten lass ich die bei den Connect
bei einen savegame passiert es mal das die werte sich vertauschen und auch wenn einer neu ist,
hatte ich mal das Problem gehabt das er komplette Adminrechte hatte
Ich habe einfach keine ahnung mehr woran das liegen kann
Die werte verrutschen schlagartig das is schwer zu sagen wann er verrutscht -
hatte ich auch und es war das selbe Problem
und naja die
'
sollten ja nicht dazu führen, das er fehlerhaft speichert -
Nabend zusammen
Da ich ein Problem seit längeren habe, und da ich auch Sniper um Rat gebeten habe es mal nachzuschauen,
Fanden wir keinerlei lösungen zu den Problem was ich habe.Bei mir ist das Problem, das sich die Werte von Spielern bei mehreren Spielern verschieben.
Das kann unterschiedlich sein ich mach mal ein paar beispiele
Spieler a komm 100 Minuten in den Knast Funktioniert
Spieler B Connectet und bekommt den Knastwert von Spieler A als Geld (nur als Beispiel)
Dann kommt es vor, das sich beim Speichern einfach mal die Werte um eine Spalte nach vorne Rücken
Sprich aus knastzeit wird dan Premium und so weiter.
Dies Problem tritt aber nur auf, wenn mehrere Spieler online sind und auch meist nach einen Savegame.
Ich geb euch mal die 3 Funktionen
Laden:
stock LoadPlayer(playerid,Key[])
{
new Data[1024],query[256];
format(query, 256, "SELECT * FROM `player` WHERE `Name` = '%s' AND `Passwort` = '%s'", PlayerInfo[playerid][Name],MD5_Hash(Key));
mysql_query(query, (-1), (0), SQL);
mysql_store_result(SQL);
if(mysql_num_rows(SQL)!=0)
{
mysql_free_result(SQL);
format(query, sizeof(query),"SELECT * FROM `player` WHERE `Name` = '%s'",PlayerInfo[playerid][Name]);
mysql_query(query, (-1), (0), SQL);
mysql_store_result(SQL);
while(mysql_fetch_row(Data, "|", SQL))
{
sscanf(Data, "p<|>ds[64]s[128]dddddddddddds[128]s[128]s[16]ddddddd",
PlayerInfo[playerid][Userid],PlayerInfo[playerid][Name],PlayerInfo[playerid][Passwort],PlayerInfo[playerid][Admin],PlayerInfo[playerid][Job],PlayerInfo[playerid][Team],PlayerInfo[playerid][Geld],PlayerInfo[playerid][Skin],
PlayerInfo[playerid][Level],PlayerInfo[playerid][Respekt],PlayerInfo[playerid][PayDay],PlayerInfo[playerid][PayDayTog],PlayerInfo[playerid][Rank],PlayerInfo[playerid][Leader],PlayerInfo[playerid][Banned],PlayerInfo[playerid][BanGrund],
PlayerInfo[playerid][BanAdmin],PlayerInfo[playerid][IP],PlayerInfo[playerid][Nummer],PlayerInfo[playerid][Safeban],PlayerInfo[playerid][Helm],PlayerInfo[playerid][Jobvertrag],PlayerInfo[playerid][Star],PlayerInfo[playerid][Igvip],
PlayerInfo[playerid][Jailtime]);
}
GivePlayerMoney(playerid,PlayerInfo[playerid][Geld]);
SetPlayerScore(playerid,PlayerInfo[playerid][Nummer]);
if(PlayerInfo[playerid][Safeban]!=0 && IsPlayerSafe(playerid)==0)
{
PlayerSafeJoin(playerid);
SendClientMessage(playerid,cRed,"Du wurdest von "AC_BOT_NAME" gekickt, da du Safe Gebannt bist und den Louncher nicht eingeschaltet hast.");
SendClientMessage(playerid,cRed,"Solltest du den Louncher bereits eingeschaltet haben, so starte den bitte neu und versuch dann wieder zu connecten.");
Kick(playerid);
}
if(IsPlayerSafe(playerid)==0)
{
format(query, sizeof(query), "{006100}[Join] %s hat den Server betreten.", PlayerInfo[playerid][Name]);
SendClientMessageToAll(cGreen, query);
}
else
{
format(query, sizeof(query), "{006100}[{FF8000}Safe{006100}-Join] %s hat den Server betreten.", PlayerInfo[playerid][Name]);
SendClientMessageToAll(cGreen, query);
PlayerSafeJoin(playerid);
}
SetPVarInt(playerid,"loggedin",1);
SetPVarInt(playerid,"played",1);
SpawnPlayer(playerid);
mysql_free_result(SQL);
return 1;
}
else
{
mysql_free_result(SQL);
format(query, 128, "{FFFFFF}Fehler{FF6E00} %s {FFFFFF}Das Passwort war Falsch", PlayerInfo[playerid][Name]);
ShowPlayerDialog(playerid,diaLogin,DIALOG_STYLE_PASSWORD,"GTA "Servername"",query,"Login","");
return 1;
}
}
Speichern:
stock SavePlayer(playerid)
{
new query[1024];
format(query, 1024, "UPDATE `player` SET `Admin` = '%d', `Job` = '%d', `Team` = '%d', `Cash` = '%d', `Skin` = '%d', `Level` = '%d', `Respekt` = '%d', `PayDay` = '%d', `PayDayTog` = '%d', `Rank` = '%d', `Leader` = '%d', `Nummer` = '%d', \
`Ban` = '%d', `BanGrund` = '%s', `BanAdmin` = '%s', `IP` = '%s', `SaveBan` = '%d', `Helm` = '%d', `Jobvertrag` = '%d', `Star` = '%d', `VIP` = '%d', `Jailtime` = '%d' WHERE `Name` = '%s' AND `id` = '%d'",
PlayerInfo[playerid][Admin],PlayerInfo[playerid][Job],PlayerInfo[playerid][Team],GetPlayerMoney(playerid)/*PlayerInfo[playerid][Geld]*/,PlayerInfo[playerid][Skin],PlayerInfo[playerid][Level],PlayerInfo[playerid][Respekt],PlayerInfo[playerid][PayDay],PlayerInfo[playerid][PayDayTog],PlayerInfo[playerid][Rank],
PlayerInfo[playerid][Leader],PlayerInfo[playerid][Nummer],PlayerInfo[playerid][Banned],PlayerInfo[playerid][BanGrund],PlayerInfo[playerid][BanAdmin],PlayerInfo[playerid][IP],PlayerInfo[playerid][Safeban],PlayerInfo[playerid][Helm],
PlayerInfo[playerid][Jobvertrag],PlayerInfo[playerid][Star],PlayerInfo[playerid][Igvip],PlayerInfo[playerid][Jailtime],PlayerInfo[playerid][Name],PlayerInfo[playerid][Userid]);
mysql_query(query, (-1), (0), SQL);
return 1;
}
Savegame:
DT_Public SaveGame()
{
new t1,t2,stunde,minute,sekunde,query[512];
gettime(stunde,minute,sekunde);
t1 = sekunde;
for(new i;i<MAX_PLAYERS;i++)
{
if(GetPVarInt(i,"loggedin")==1)
{
SavePlayer(i);
}
}
format(query, sizeof(query), "UPDATE `Server` SET `Kasse` = '%d',`Benzin` = '%d',`Kies` = '%d',`Container` = '%d', `Waren` = '%d' WHERE `Name` = 'Server'",Server[ServerKasse],Server[ServerBenzin],Server[ServerKies],Server[Servercontainer],Server[ServerLemis]);
mysql_query(query, (-1), (0), SQL);
format(query, sizeof(query), "UPDATE `JobWaren` SET `Supermarkt1` = '%d' WHERE `Name` = 'Server'",Supermarktware);
mysql_query(query, (-1), (0), SQL);
for(new i;i<MBI;i++)
{
if(strlen(biz2[i][bOwner]))
{
format(query,sizeof query,"UPDATE `Bizz` SET `Besitzer`= '%s', `Bizname`= '%s', `Offen`= '%d', `Enter`= '%d', `Prods`= '%d', `PP`= '%d', `Kasse`= '%d', `Payentry`= '%d' WHERE `BizID`='%d'",
biz2[i][bOwner],biz2[i][bName],biz2[i][bOpen],biz2[i][bEnter],biz2[i][bProds],biz2[i][bPP],biz2[i][bKasse],biz2[i][bPayentry],i);
mysql_query(query, (-1), (0), SQL);
}
}
for(new i;i!=MAX_HAUESER;i++)
{
if(strlen(Haus[i][Besitzer]))
{
format(query,sizeof query,"UPDATE `Haus` SET `Besitzer`= '%s',`Gekauft`= '%d',`Abgeschlossen`= '%d',`aX`= '%f',`aY`= '%f',`aZ`= '%f',`iX`= '%f',`iY`= '%f',`iZ`= '%f',`Interior`= '%d',`VW`= '%d',`Preis`= '%d' WHERE `id`='%d'",
Haus[i][Besitzer],Haus[i][Gekauft],Haus[i][Abgeschlossen],Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2],Haus[i][Pos][3],Haus[i][Pos][4],Haus[i][Pos][5],Haus[i][Int],Haus[i][VirtualWorld],Haus[i][Preis],i);
mysql_query(query, (-1), (0), SQL);
}
}
gettime(stunde,minute,sekunde);
t2 = sekunde;
format(query,128,"Spiel in %d Sekunden gespeichert.",t2 - t1);
AdminMessage(AC_BOT_NAME,query);
print(query);
}
Ich bin wirklich ratlos und [DT]Sniper. ist es auch daher hoffe ich mal, das einer von euch eine idee dazu hat -
Schreib das mal bitte anders
forward _OnPlayerConnect(playerid);
wenn einer jetzt die und dein Fraktionstool nutzt, dann wird eines von beiden nicht richtig funktionieren -
ja indem du einfach nach den Supporter das machst
\n\n\n -
-
Bitteschön:
Genau das meine ich danke dir -
verwendest du dann einfach folgendes:
TimestampToDate(Timestamp, &year, &month, &day, &hour, &minute, &second, HourGMT, MinuteGMT = 0)Wie stell ich das jetzt am Dümmsten da an?
((Sorry da steht nix bzw will nicht das ganze durchsuchen)) -
Du speicherst einfach den jetzigen Timestap rechnest da drauf wielange er gesperrt ist und gibst dann via timec einfach die Zeit vom Timestap+sperre aus.
Ich will aber nicht das haben, das es da in Tagen steht sondern nach Datum und Zeit das kann die Funktion eben nichtWarum möchtest du einen da einen Timestamp verwenden?
Mir ist zwar klar, dass das einfacher wäre, aber da dies so
in SA-MP nicht existiert, wärst du doch besser dran, einfach
nur das Datum zu speichern und anzeigen zu lassen oder nicht?Da ich dies in bezug auf WBB nutzen möchte daher nutz ich das
mit den command war es nur ein beispiel -
ini löschen und neu erstellen lassen dann erst speichern
-
hab ich gerade gemacht aber so ganz ist es nicht das was ich wollte
er Zeigt mir ja an in Minuten/Monate/Jahre das an
Ich habe eigendlich vor, das es angezeigt wird wie z.B. soTimestamp+xxxx
wenn er den cmd hat dann sowas in der art
Du hast bis zum 02.02.2013 18:35 Uhr eine Sperre
das geht mit der Funktion aus den tut da nicht -
ahh also kann ich es so verwenden oder?
timec(3600)
dann würd er mir ja sagen, das die Zahl 1ne stunde ist.. -
geb mal diese funktion bekannt, denn da ist der fehler
public AntiMoneyHack () -
Ich nutz die Funktion ja gerne in Pawn aber sage ich jetzt mal, das ich jetzt den Command XX eingebe, und dann die Timestamp speicher.
Wenn ich den dann erneut ausführen, dann soll er den Timestamp aufrufen und z.B. das sagen:
Der command ist bis zum xx.xx.xxxx yy,yy,yy Uhr gesperrt
halt sowas soll da kommen aber wie ich das umrechne weiß ich nicht -
Nabend zusammen
Ich habe eine kleine Frage wie kann ich die
UNIX_TIMESTAMP
so verwende, das ich die Zeit rausbekomme?Ich habe vor, ein system zu machen, wo man eine Sperre bekommt und dafür würde ich die UNIX_TIMESTAMP funktion nutzen.
Ich hoffe, das einer eine idee dazu hat
-
Poste mal die Zeilen die dadrüber stehen
-
ocmd:zoll(playerid,params[])
{
if(IsPlayerInRangeOfPoint(playerid,10,1750.6999512,519.5000000,26.8999996))
{
if(GetPlayerMoney(playerid) => 50)
{
MoveObject(zoll[0],1750.6999512,519.5000000,26.8999996-10,5);
SendClientMessage(playerid,HBLAU,"Beamter: Schöne Weiterfahrt!");
GivePlayerMoney(playerid, -50);
SetTimer("ZNLV",3000,false);
}
else
{
SendClientMessage(playerid,HBLAU,"Du hast zu wenig Geld");
}
return 1;
}
else if(IsPlayerInRangeOfPoint(playerid,10,1728.8000488,531.7999878,26.6000004))
{
MoveObject(zoll[1],1728.8000488,531.7999878,26.6000004-10,5);
SendClientMessage(playerid,HBLAU,"Beamter: Schöne Weiterfahrt!");
GivePlayerMoney(playerid, -50);
SetTimer("ZNLV",3000,false);
return 1;
}
else
{
SendClientMessage(playerid,Farbe,"Du bist an keiner Zollstation");
}
return 1;
}
warum so?
die geldabfrage reicht soa us und ist 1ne Zeile nur
if(GetPlayerMoney(playerid) <50)return SendClientMessage(playerid,HBLAU,"Du hast zu wenig Geld");