Nein das war leider nicht die Lösung,
Beiträge von robbi2304
-
-
Kannst du mir mal die Funktion "PlayerWantedBarUpdate" zeigen?
PS: Du nervst nicht, dafür ist das Forum ja da.
Naja ich bin heute ja schon Recht oft mit kleinen Dingen dran gewesen.
Gerne gebe ich auch die UpdateBar Frei
stock PlayerWantedBarUpdate(playerid)
{
if(PlayerWantedBar[playerid] == true)
{
if(PlayerInfo[playerid][pWanted] >= 1)
{
new string[64];
format(string, sizeof(string), "W%d", PlayerInfo[playerid][pWanted]);
PlayerTextDrawSetString(playerid, p_Wanteds[playerid], string);
}
else
{
PlayerTextDrawHide(playerid, p_Wanteds[playerid]);
PlayerTextDrawDestroy(playerid, p_Wanteds[playerid]);
}
}
else
{
PlayerWantedBarCreate(playerid);
}
return 1;
}Wiegesagt er updatet nicht wenn er erst auf den wert 0 gecleart wurde
-
Ich weiß das ich gerade vllt etwas am nerven bin xD. Aber ich habe nun noch wirklich 1 ding.
Sobald ich Wanteds hinzufüge und danach wieder lösche, Updatet er mir nicht den
PlayerWantedBarUpdate(pID);
{
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
{
new pID, Wanteds, reason[128], string[128];
if(sscanf(params, "uds",pID,Wanteds,reason)) return SendClientMessage(playerid,COLOR_RED,"Benutzung: /su [ID] [Anzahl] [Grund] ");
{
if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_RED, "Dieser Spieler ist offline");
PlayerInfo[pID][pWanted] += Wanteds;
new name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerName(pID, name2, sizeof(name2));
format(string, sizeof(string), "Info: Officer %s hat dir %d Wanted Punkte gegeben( Grund: %s )", name, Wanteds, reason);
SendClientMessage(pID, COLOR_RED, string);
format(string, sizeof(string), "Info: Du hast %s %d Wanted Punkte gegeben.", name2, Wanteds);
SendClientMessage(playerid, COLOR_RED, string);
PlayerWantedBarUpdate(pID);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist.");
return 1;
}
}ocmd:suclear(playerid, params[])
{
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
{new pID, Wanteds, reason[128], string[128];
if(sscanf(params, "uds",pID,Wanteds,reason)) return SendClientMessage(playerid,COLOR_RED,"Benutzung: /su [ID] [Anzahl] [Grund] ");
{
PlayerWantedBarUpdate(pID);
if(PlayerInfo[pID][pWanted]<Wanteds)return SendClientMessage(playerid,-1,"Die eingegebene Zahl ist höher als die Wantedanzahl des Spielers!");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_RED, "Dieser Spieler ist offline");
PlayerInfo[pID][pWanted] -= Wanteds;
new name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerName(pID, name2, sizeof(name2));
format(string, sizeof(string), "Info: Officer %s hat dir %d Wanted Punkte gegeben( Grund: %s )", name, Wanteds, reason);
SendClientMessage(pID, COLOR_RED, string);
format(string, sizeof(string), "Info: Du hast %s %d Wanted Punkte gegeben.", name2, Wanteds);
SendClientMessage(playerid, COLOR_RED, string);
PlayerWantedBarUpdate(pID);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist.");
return 1;
}}
Bzw immer wenn ich die Wanteds auf 0 Cleare ruft er die Funktion nicht mehr auf
-
Das klappt. Nun nochmal eine Frage. Wie kann ich Abfragen wieviele Wanteds der Spieler derzeit besitzt damit ich auch nicht mehr als diese Clearen kann
ocmd:clear(playerid, params[])
{
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
{
new pID, string[128],Wanteds;
if(sscanf(params, "u", pID,Wanteds))
{
if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_RED, "Dieser Spieler ist offline");
PlayerInfo[pID][pWanted]-=Wanteds;
PlayerWantedBarUpdate(pID);
new name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerName(pID, name2, sizeof(name2));
format(string, sizeof(string), "Info: Officer %s hat deine Wantds gelöscht", name);
SendClientMessage(pID, COLOR_RED, string);
format(string, sizeof(string), "Info: Du hast %s seine Wanteds gelöscht.", name2);
SendClientMessage(playerid, COLOR_RED, string);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist.");
return 1;
}
return 1;
} -
Guten Tag mein Suspect Befehl weißt scheinbar einen Fehler auf.
Der Befehl vergibt leider keine Wanteds und zeigt imnmer nur an das man 0 wanteds erhalten hat obwohl eine höhere zahl eingetragen ist.
@Jeffry vllt
ocmd:su(playerid, params[])
{
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
{
new pID, Wanteds, reason, string[128];
if(sscanf(params, "uds", pID, reason))
{
if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_RED, "Dieser Spieler ist offline");
PlayerInfo[pID][pWanted] += Wanteds;
PlayerWantedBarUpdate(pID);
new name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerName(pID, name2, sizeof(name2));
format(string, sizeof(string), "Info: Officer %s hat dir %d Wanted Punkte gegeben( Grund: %s )", name, Wanteds, reason);
SendClientMessage(pID, COLOR_RED, string);
format(string, sizeof(string), "Info: Du hast %s %d Wanted Punkte gegeben.", name2, Wanteds);
SendClientMessage(playerid, COLOR_RED, string);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist.");
return 1;
}
return 1;
} -
Gebe den beiden Dialogen unterschiedliche IDs. Zum Beispiel 10 und 11.
Oh ok da hab ich was verwechselt dachte das wäre eine Anzahl aber Gut. Klappt
-
Guten Tag, mein Dialog spielt derzeit sehr verrückt.
Sobald ich den listitem aufrufe, zeigt er mir den Text an allerdings nimmt führt er die Aktion von listitem 0 aus. Was habe ich falsch gemacht ?
if(dialogid == DIALOG_LSPD)
{
if(listitem == 0)
{
if(OnDuty[playerid] == 1)
{
ResetPlayerWeapons(playerid);
SetPlayerSkin(playerid,0);
OnDuty[playerid] = 0;
SetPlayerArmour(playerid,0);
SendClientMessage(playerid,COLOR_BUSBLUE,"Sie sind nun nicht mehr im Dienst.");
return 1;
}
if(OnDuty[playerid] == 0)
{
SetPlayerSkin(playerid,286);
OnDuty[playerid] = 1;
SetPlayerArmour(playerid,100);
SendClientMessage(playerid,COLOR_BUSBLUE,"Sie sind ab Sofort im Dienst!");
return 1;
}
}
if(listitem == 1)
{
ShowPlayerDialog(playerid, DIALOG_LSPDA, DIALOG_STYLE_LIST, "Registration", "Police Officer LSPD 1\n""Police Officer MBIKE LSPD", "Ok", "Abbrechen");
return 1;
}
}
if(dialogid == DIALOG_LSPDA)
{if(!response) return Kick(playerid);
if(listitem == 0)
{
SetPlayerSkin(playerid,280);
return 1;
}
if(listitem == 1)
{
SetPlayerSkin(playerid,2);
return 1;
}
}
#define DIALOG_LSPD 10
#define DIALOG_LSPDA 10
ocmd:duty(playerid)
{
if(PlayerInfo[playerid][pLeader] < 1) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Leader einer Fraktion");
{
ShowPlayerDialog(playerid,DIALOG_LSPD,DIALOG_STYLE_LIST,"CopDuty","Anmelden\t&\tAbmelden\n""Skins","Wählen","");
return 1;
}
} -
Danke dir wiegesagt trotzdem. Ich wäre sonst nicht auf die Idee gekommen das es noch dort gespeichert ist =)
-
Ich scheine manchmal echt Blöd zusein. Ist ja klar das er bei Joinen die 30 lädt und behält. Sobald ich banne meine Funktion in die DB geschrieben wird, dann aber das vom Connecten wieder gespeichert wird. Daher danke für den Tipp da nochmal rein zu schauen.
Jetzt geht das ganze
-
Bei tbantime steht doch jetzt eine 30 drin.
Was möchtest du denn dadrin stehen haben? Die Minuten, wie lange der Spieler gebannt ist, oder den timestamp?
Die Minuten. Wiegesagt hatte ich eben zum Test Folgendes drin
PlayerInfo[playerid][pTBanned]=30; dieser setzte die 30 ein egal was man als Grund angegeben hat weil es ja keinen anderen speicherbefehl richtig gab. Daher Ignoriere die 30 und stelle dir eine null darin vor
-
Ich habe zuvor mit
PlayerInfo[playerid][TBanned]=dauer; gearbeitet.
Aber soweit ich weiß kann es z.b dann bei einem Timebug o.ä nicht übernommen werden.
Daher möchte ich das er es direkt in die Datenbank speichert. Natürlich kann ich dir eben eine Übersicht der Datenbank zeigen.Passwort hashen ist denke ich mal das wichtigste xD
-
-
Du kannst mit %s jedoch keine INT's speichern.
Okay. Ich habe nun im Code das ganze abgeändert in %i allerdings gibt es noch immer Probleme beim speichern.
Weder in der MySQL Log noch in der Server Log wird etwas angezeigt was ich sehr komisch finde
-
Okay verstehe..
Er speichert es nicht weil du angibst es sei eine Zeichenkette (%s) jedoch ist es ja eine Zahl (%i) deswegen versteht das MySQL einfach nicht.
Inkorrekt:
Codemysql_format(handle, query, sizeof(query), "UPDATE users SET tbantime = '%s' WHERE id = '%d'",dauer,PlayerInfo[playerid]);
Richtig:
Codemysql_format(handle, query, sizeof(query), "UPDATE users SET tbantime = '%i' WHERE id = '%d'",dauer,PlayerInfo[playerid]);
Kannst du mir mal ein Screenshot vom tbantime in deiner MySQL Tabelle schicken?
Nein das ist es leider nicht. Hatte das zuerst probiert und dann mal mit %s. So habe ich das dann wohl hier mit rein kopiert.
Hier einmal ein Screen des tables
-
Eine Frage habe ich noch zu etwas anderem. Nun geht es um ein Timeban System. Leider speichert er nicht in die Datenbank.
Hiermit wollte ich gerne den Wert in die Datenbank speichern
new query[256];
mysql_format(handle, query, sizeof(query), "UPDATE users SET tbantime = '%s' WHERE id = '%d'",dauer,PlayerInfo[playerid]);
mysql_pquery(handle, query);Gesamt Code:
stock TBan(playerid,const string[],dauer,bannerid)
{
new timestamp;
timestamp = gettime();
new sekunden = dauer * 60;
timestamp += sekunden;
new str[128];
new name[MAX_PLAYER_NAME],bannername[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(bannerid,bannername,sizeof(bannername));
format(str,sizeof(str),"[SERVER] %s wurde von %s für %d Minuten gebannt. Grund: %s",name,bannername,dauer,string);
new query[256];
mysql_format(handle, query, sizeof(query), "UPDATE users SET tbantime = '%s' WHERE id = '%d'",dauer,PlayerInfo[playerid]);
mysql_pquery(handle, query);
SendClientMessageToAll(COLOR_RED,str);
SendClientMessage(p_id,COLOR_RED,"Du wurdest gebannt & gekickt");
SetTimerEx("DelayedKick", 100, false, "i", p_id);return 1;
} -
Zeig mir mal bitte pBannedGrund in deiner MySQL Tabelle, als was hast du das deklariert?
Ah gefunden xD. Wo du es sagst, ich rufe es garnicht ab beim PlayerLaden xD.// Edit
Oder auch nicht.
mit folgender Funktion lade ich den user deren BannedGrund
Die MySQL Log gibt dabei einen Fehler aus.frage ist was das fürn ungültiger Datentyp ist. Denn bei den anderen Funktioniert es super
-
Danke erstmal für deine Antwort. Die länge habe ich nun definiert. Allerdings zeigt er mir immernoch nichts als Grund an. Siehe Foto.
Hier mal der ganze Code für die Abfrage ob der Spieler gebannt ist.
if(PlayerInfo[playerid][pBanned]==1)
{
SetPlayerPos(playerid,1552.2690,-1675.3098,16.1953);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
new string[1300],string1[1300],name1[MAX_PLAYER_NAME];
GetPlayerName(playerid,name1,sizeof(name1));
format(string,sizeof(string),"Da du dich nicht an unser Regelwerk halten konntest, wurde dein Account gebannt !\nSolltest du der Meinung sein das es sich hierbei um eine Verwechslung handelt, schreibe einen Entbann Antrag im Forum.\nLiebe Grüße das Server Team\n\n\t\t Grund: %s",PlayerInfo[playerid][pBannedGrund]);
strcat(string1,string);
ShowPlayerDialog(playerid, DIALOG_BAN, DIALOG_STYLE_MSGBOX,PlayerInfo[playerid][pName],string1,"Ok","");
SendClientMessage(playerid,-1,"Banned");
SetTimerEx("DelayedKick", 1, false, "i", playerid);
return 1;
}
return 1;
} -
Guten Tag liebe Mitglieder ich habe ein sehr sehr kleines Problem.
Ich würde gerne auslesen warum der User gebannt wurde und komme mit i% und s% nicht weit.Gibt es was anderes zum auslessen von Texten ?
Codeformat(string,sizeof(string),"Da du dich nicht an unser Regelwerk halten konntest, wurde dein Account gebannt !\nSolltest du der Meinung sein das es sich hierbei um eine Verwechslung handelt, schreibe einen Entbann Antrag im Forum.\nLiebe Grüße das Server Team\n\n\t\t Grund: %i",PlayerInfo[playerid][pBannedGrund]);
-
Das Problem ist derzeitig schon wieder behoben. Danke trotzdem nochmal
-
Was sagt der pc wenn du das iPhone anschließen tust.
Handys sollte man bis ca 80% Laden und dann abnehmen so kann sicher gestellt werden das der Akku nicht überladen wird.
Zwar hat man weniger Zeit am handy kann es aber auf labge zeit länger nutzen und spart gelf