Hallo hab ein problem beim abspeichern
Ich könnte mir vorstellen das es daran liegt:
Also das ' einfach löschen, hat dort nichts zu suchen.
Hallo hab ein problem beim abspeichern
Ich könnte mir vorstellen das es daran liegt:
Also das ' einfach löschen, hat dort nichts zu suchen.
//EDIT
Wie mache ich das am besten? so bekomme ich folgene errors:
stock Crewrang(playerid)
{
new rang[54];
switch(PlayerInfo[playerid][CrewRang])
{
case -1:{rang="-";}
case 0:{rang="-";}
case 1:{rang=CrewInfo[PlayerInfo[playerid][Crew]][Rangname1];}
case 2:{rang=CrewInfo[PlayerInfo[playerid][Crew]][Rangname2];}
case 3:{rang=CrewInfo[PlayerInfo[playerid][Crew]][Rangname3];}
case 4:{rang=CrewInfo[PlayerInfo[playerid][Crew]][Rangname4];}
case 5:{rang=CrewInfo[PlayerInfo[playerid][Crew]][Rangname5];}
case 6:{rang=CrewInfo[PlayerInfo[playerid][Crew]][Rangname6];}
default:{rang="Leer";}
}
return rang;
}
Alles anzeigen
[06.05.2020 13:28:00]D:\iTsMaho Selfmade\pawno\include\selfmade\stocks.inc(564) : error 047: array sizes do not match, or destination array is too small
[06.05.2020 13:28:00]D:\iTsMaho Selfmade\pawno\include\selfmade\stocks.inc(565) : error 047: array sizes do not match, or destination array is too small
[06.05.2020 13:28:00]D:\iTsMaho Selfmade\pawno\include\selfmade\stocks.inc(566) : error 047: array sizes do not match, or destination array is too small
[06.05.2020 13:28:00]D:\iTsMaho Selfmade\pawno\include\selfmade\stocks.inc(567) : error 047: array sizes do not match, or destination array is too small
[06.05.2020 13:28:00]D:\iTsMaho Selfmade\pawno\include\selfmade\stocks.inc(568) : error 047: array sizes do not match, or destination array is too small
[06.05.2020 13:28:00]D:\iTsMaho Selfmade\pawno\include\selfmade\stocks.inc(569) : error 047: array sizes do not match, or destination array is too small
wie mache ich es wenn ich mich mit einem Fahrzeug einer Schranke näher das sie dann auf geht ohne das ich ein Befehl eingeben muss?
wie mache ich es wenn ich mich mit einem Fahrzeug einer Schranke näher das sie dann auf geht ohne das ich ein Befehl eingeben muss?
Über einen Timer (oder Streamer-Zonen) prüfst du, ob der Spieler in der Nähe ist und dann bewegst du einfach das Objekt (Objekte langsam rotieren lassen)
Und wenn er weg ist, lässt du die schranke wieder runter.
Hi hab ein kleines problem und zwar sobald ich versuche eine ID die nicht ON eine Rang zu setzen kommt ein Error in die Server Log.
Befehl:
NO_CONNET_P Steht für:
#define NO_CONNECT_P SCM(playerid,ROT,""#HTML_RED"FEHLER | "#HTML_WHITE"Der angegebene Spieler ist nicht Eingeloggt!");
ocmd:giverang(playerid,params[])
{
if(!PlayerInfo[playerid][LoggedIn]) return NO_CONNECT_ME
//if(PlayerInfo[playerid][CrewRang] != 6) return NO_RANG
new string[120], pID, rang;
if(sscanf(params,"ui", pID, rang)) return SCM(playerid,WEISS,""#HTML_GREEN"INFO | "#HTML_WHITE"/Giverang [playerid/name] [Rang 0 - 6]");
if(!PlayerInfo[pID][LoggedIn]) return NO_CONNECT_P
if(rang<0||rang>6) return SCM(playerid,WEISS,""#HTML_GREEN"INFO | "#HTML_WHITE"/Giverang [playerid/name] [Rang 0 - 6]");
if(PlayerInfo[pID][Crew] != PlayerInfo[playerid][Crew]) return SCM(playerid,WEISS,""#HTML_RED"FEHLER | "#HTML_WHITE"Dieser Spieler ist nicht in deiner Crew!");
PlayerInfo[pID][CrewRang] = rang;
Crewrang(playerid);
Crewrang(pID);
format(string,sizeof(string), ""#HTML_WHITE"["#HTML_RED"%s %s"#HTML_WHITE"]:"#CREWCHAT" hat "#HTML_RED"%s"#CREWCHAT" den Rang "#HTML_RED"%s"#CREWCHAT" zugewiesen.",nebenRang[playerid], PlayerInfo[playerid][Name], PlayerInfo[pID][Name], nebenRang[pID]);
CrewChat(PlayerInfo[playerid][Crew],WEISS,string);
new log[100];
format(log,sizeof(log), "%s hat dem Spieler %s den Crewrang %s gegeben.",PlayerInfo[playerid][Name],PlayerInfo[pID][Name], nebenRang[pID]);
Log("Giverang",log);
return 1;
}
Alles anzeigen
Fehler Meldung:
[debug] Run time error 4: "Array index out of bounds"
[debug] Attempted to read/write array element at index 65535 in array of size 1000
[debug] AMX backtrace:
[debug] #0 00054090 in public ocmd_giverang (playerid=0, params[]=@001c5464 "1 6") at D:\iTsMaho Selfmade\gamemodes\selfmade.pwn:1204
[debug] #1 native CallLocalFunction () in samp-server.exe
[debug] #2 000284f8 in public OnPlayerCommandText (playerid=0, cmdtext[]=@001c542c "/giverang 1 6") at D:\iTsMaho Selfmade\pawno\include\ocmd.inc:77
Ich denke mal es liegt an der Abfrage ob pID Online ist, weil InGame bekomme ich die nachricht NO_CONNET_P nicht.
Ist etwas an der Abfrage falsch?
Du musst mit IsPlayerConnected abfragen, ob der Spieler online ist.
Sonst ist pID INVALID_PLAYER_ID.
if(!PlayerInfo[pID][LoggedIn]) return NO_CONNECT_P
Schreib das so:
Denn pID wird auf INVALID_PLAYER_ID durch sscanf gesetzt ergo (65535) und da du das in das Array packst, das aber nur eine größe von 1000 hat, kommt es hier zu einem Fehler. Das bedeutet, dass du das abfangen musst.
Das kannst du so machen oder auch:
Wobei der IsPlayerConnected sicherer ist, da er auch ohne sscanf funktionieren würde
Noch ein Problem
So bald ich mein /kick befehl nutze mit parametern kommt eine fehlermeldung:
ocmd:kick(playerid,params[])
{
if(!IsPlayerConnected(playerid) || !PlayerInfo[playerid][LoggedIn]) return NO_CONNECT_ME
if(!IsPlayerAnAdmin(playerid, 1)) return NO_ADMIN
new string[120], pID, grund;
if(sscanf(params,"us", pID, grund)) return SCM(playerid,WEISS,""#HTML_GREEN"INFO | "#HTML_WHITE"/kick [playerid/name] [Grund]");
if(!IsPlayerConnected(pID) || !PlayerInfo[pID][LoggedIn]) return NO_CONNECT_P
if(IsPlayerAnAdmin(pID,1)) return SCM(playerid,WEISS,""#HTML_GREEN"INFO | "#HTML_WHITE"Du darfst kein Teammitglieder Kicken!");
format(string,sizeof(string), "%s %s hat %s von Server gekickt Grund: %s.",Adminrang(playerid), PlayerInfo[playerid][Name],PlayerInfo[playerid][Name], grund);
SCMT(WEISS,string);
Kick(pID);
new log[100];
format(log,sizeof(log), "%s hat den Spieler %s gekickt Grund: %s.",PlayerInfo[playerid][Name],PlayerInfo[pID][Name], grund);
Log("Kick",log);
return 1;
}
Alles anzeigen
Fehlermeldung:
sscanf warning: Strings without a length are deprecated, please add a destination size.
So bald ich mein /kick befehl nutze mit parametern kommt eine fehlermeldung:
Du musst grund auch schon als string deklarieren
Guten Abend,
ich versuche via Dialog die Wetterid zu ändern, jedoch steht wenn ich ID 7 eingebe ID 55.
server_Wetter
new ServerInfo[1][ServerInfoEnum];
Bei LoadServerData:
cache_get_value_name_int(0, "wetter", ServerInfo[0][server_Wetter]);
printf("Wetter: %d",ServerInfo[0][server_Wetter]);
stock ShowServerDialog(playerid,dialogid)
{
new string[512];
switch(dialogid)
{
case DIALOG_EDIT_SERVER_MENU:
{
if(ServerInfo[0][server_Maintenance])format(string,sizeof(string),"{FFFFFF}Option\t{FFFFFF}Wert\nName\t%s\nMode\t%s\nTag\t%s\nVersion\t%s\nWebsite\t%s\nUCP\t%s\nTS3\t%s\nWetter ID\t%d\nMapname\t%s\nSprache\t%s\nServer Passwort\t%s\nRCON Passwort\t%s\nWartungsarbeiten\t{00FF00}Aktiviert",ServerInfo[0][server_Name],ServerInfo[0][server_Mode],ServerInfo[0][server_Tag],ServerInfo[0][server_Version],ServerInfo[0][server_Website],ServerInfo[0][server_UCP],ServerInfo[0][server_TS3],
ServerInfo[0][server_Wetter],ServerInfo[0][server_Mapname],ServerInfo[0][server_Sprache],ServerInfo[0][server_PW],ServerInfo[0][server_RCONPW]);
else format(string,sizeof(string),"{FFFFFF}Option\t{FFFFFF}Wert\nName\t%s\nMode\t%s\nTag\t%s\nVersion\t%s\nWebsite\t%s\nUCP\t%s\nTS3\t%s\nWetter ID\t%d\nMapname\t%s\nSprache\t%s\nServer Passwort\t%s\nRCON Passwort\t%s\nWartungsarbeiten\t{FF0000}Deaktiviert",ServerInfo[0][server_Name],ServerInfo[0][server_Mode],ServerInfo[0][server_Tag],ServerInfo[0][server_Version],ServerInfo[0][server_Website],ServerInfo[0][server_UCP],ServerInfo[0][server_TS3],ServerInfo[0][server_Wetter],
ServerInfo[0][server_Mapname],ServerInfo[0][server_Sprache],ServerInfo[0][server_PW],ServerInfo[0][server_RCONPW]);
SPD(playerid,DIALOG_EDIT_SERVER_MENU,DIALOG_STYLE_TABLIST_HEADERS,"{FFFFFF}Bearbeiten - Server - Übersicht",string,"{FFFFFF}Weiter","{FFFFFF}Zurück");
}
}
return 1;
}
case DIALOG_EDIT_SERVER_WETTER:
{
if(!response)return ShowServerDialog(playerid,DIALOG_EDIT_SERVER_MENU);
ServerInfo[0][server_Wetter] = strval(inputtext);
format(ServerInfo[0][server_Wetter],11,"%s",inputtext);
ShowServerDialog(playerid,DIALOG_EDIT_SERVER_MENU);
mysql_format(handle,string,sizeof(string),"UPDATE `server` SET `wetter` = '%d' WHERE `id` = '0'",ServerInfo[0][server_Wetter]);
mysql_tquery(handle,string);
SetWeather(ServerInfo[0][server_Wetter]);
return 1;
}
Alles anzeigen
Was genau mache ich falsch?
Danke im Voraus.
MfG
Allrounder18
Danke, hat geklappt.
Ich habe auch eingebaut das man das RCON PW ändern kann, kann ich dies genau so wie Account PWs mit Bcrypt hashen in der DB?
Über einen Timer (oder Streamer-Zonen) prüfst du, ob der Spieler in der Nähe ist und dann bewegst du einfach das Objekt (Objekte langsam rotieren lassen)
Und wenn er weg ist, lässt du die schranke wieder runter.
ich hab es schon mit nem timer probiert aber bekomme es nicht hin die
if(IsAFirefighter(playerid)|| IsPlayerInFrac(playerid,1) || IsPlayerInFrac(playerid,2))
if(IsPlayerInRangeOfPoint(playerid,6,929.0650,-1216.7328,16.9343))
sollte mit eingbaut sein
danke schonmal
Ich habe auch eingebaut das man das RCON PW ändern kann, kann ich dies genau so wie Account PWs mit Bcrypt hashen in der DB?
Wozu solltest du das in einer Datenbank speichern wollen, wenn es eh in der server.cfg steht?
ch hab es schon mit nem timer probiert aber bekomme es nicht hin die
Hä?
Musst doch nur alles zusammenführen:
//Oben im Skript
new bool:g_open;
//Im Timer:
new bool:in_range;
for(new i=GetPlayerPoolSize(); i!=-1; i--)
{
if(IsPlayerInRangeOfPoint(i,6,929.0650,-1216.7328,16.9343) && (IsAFirefighter(i)|| IsPlayerInFrac(i,1) || IsPlayerInFrac(i,2)))
{
MoveDynamicObject(gate,x,y,z,speed,r1,r2,r3); //<< open
in_range=g_open=true;
break;
}
}
if(!in_range && g_open && !IsDynamicObjectMoving(gate))
{
MoveDynamicObject(gate,x,y,z,speed,r1,r2,r3); //<< close
g_open=false;
}
Alles anzeigen
Wozu solltest du das in einer Datenbank speichern wollen, wenn es eh in der server.cfg steht?
Damit ich es ingame ändern kann.
Damit ich es ingame ändern kann.
SendRconCommand(rcon_password NEUES_PASSWORT);
//warum in die db speichern?
SendRconCommand(rcon_password NEUES_PASSWORT);
//warum in die db speichern?
Danke.
In die Datenbank speichern wollte ich es, da ich dort meine gesamten Serverdaten abspeichere.
In die Datenbank speichern wollte ich es, da ich dort meine gesamten Serverdaten abspeichere.
kann ich dies genau so wie Account PWs mit Bcrypt hashen in der DB?
Ja, das kannst du theoretisch machen, da es ja auch nur ein Passwort ist, du müsstest es nur zum Neu-Speichern wieder hashen und wenn du es ausließt müsstest du es enthashen um es z.B. bei SendRconCommand (Wie von Maho geschrieben) zu verwenden
und wenn du es ausließt müsstest du es enthashen
Eieieiei, schau dir nochmal mein Tutorial an: Hash Verfahren genauer erklärt
Sowas wie enthashen gibt es nicht.
Da ein Hash keine Verschlüsselung ist.
Demnach ist dieses ganze Unterfangen auch komplett sinnlos, sowas in der Datenbank zu speichern.