Es gibt sehr wohl eine brauchbare Log. Such mal nach Instanz.Log o.ä. im Sinusbot Verzeichnis.
Tut mir leid, da ist nichts. Wenn ich den Sinusbot als Dienst starte erstellt sich kein Log.
Es gibt sehr wohl eine brauchbare Log. Such mal nach Instanz.Log o.ä. im Sinusbot Verzeichnis.
Tut mir leid, da ist nichts. Wenn ich den Sinusbot als Dienst starte erstellt sich kein Log.
Es gibt leider keinen brauchbaren log.
Die LogFiles von?
Hallo,
ich möchte auf meinem Windows Server 2016 Sinusbot als Dienst nutzen. Sinusbot wurde bereits als Dienst festgelegt, der Dienst wird zwar als gestartet angezeigt bei den Diensten, jedoch ist er anscheinend nicht gestartet, da das Webinterface nicht geht.
Ich führe alles mit Adminrechten aus, aber leider klappts nicht. Woran kann das liegen?
MfG Allrounder18
Tut es leider nicht.
Das ist meine Funktion.
FUNCTION LoadCharacter(playerid)
{
new rows,string[128],skins[128],Float:health,Float:armour;
new time = GetTickCount();
SetPVarInt(playerid,"time",time);
cache_get_row_count(rows);
if(rows)
{
cache_get_value_name_int(0, "Lock", CharacterInfo[playerid][character_Lock]);
if(CharacterInfo[playerid][character_Lock])
{
mysql_format(handle, string, sizeof(string), "SELECT * FROM `character` WHERE `AccountID` = '%d'", AccountInfo[playerid][account_ID]);
mysql_tquery(handle, string, "ShowCharacter", "d", playerid);
SendInfo(playerid,"Der Charakter ist noch nicht Freigeschaltet");
return 1;
}
cache_get_value_name_int(0, "ID", CharacterInfo[playerid][character_ID]);
cache_get_value_name_int(0, "Slot", CharacterInfo[playerid][character_Slot]);
cache_get_value_name(0, "Name", CharacterInfo[playerid][character_Name], 255);
cache_get_value_name_int(0, "Level", CharacterInfo[playerid][character_Level]);
cache_get_value_name_int(0, "Respektpunkte", CharacterInfo[playerid][character_Respektpunkte]);
cache_get_value_name_float(0, "Geld", CharacterInfo[playerid][character_Geld]);
cache_get_value_name_float(0, "Health",health);
cache_get_value_name_float(0, "Armor",armour);
cache_get_value_name_int(0, "Food", CharacterInfo[playerid][character_Food]);
cache_get_value_name_int(0, "Thirst", CharacterInfo[playerid][character_Thirst]);
cache_get_value_name(0, "Skin", string, 255);
format(skins,128,"%s",string);
sscanf(skins, "p<|>iii",CharacterInfo[playerid][character_Skin][0],CharacterInfo[playerid][character_Skin][1],CharacterInfo[playerid][character_Skin][2]);
cache_get_value_name_int(0, "Geschlecht", CharacterInfo[playerid][character_Geschlecht]);
cache_get_value_name_float(0, "X",CharacterInfo[playerid][character_Pos][0]);
cache_get_value_name_float(0, "Y",CharacterInfo[playerid][character_Pos][1]);
cache_get_value_name_float(0, "Z",CharacterInfo[playerid][character_Pos][2]);
cache_get_value_name_float(0, "R",CharacterInfo[playerid][character_Pos][3]);
cache_get_value_name_int(0, "Interior", CharacterInfo[playerid][character_Interior]);
cache_get_value_name_int(0, "World", CharacterInfo[playerid][character_World]);
cache_get_value_name_int(0, "Fraktion", CharacterInfo[playerid][character_Fraktion]);
cache_get_value_name_int(0, "Rang", CharacterInfo[playerid][character_Rang]);
cache_get_value_name_int(0, "Duty", CharacterInfo[playerid][character_Duty]);
cache_get_value_name_int(0, "Job", CharacterInfo[playerid][character_Job]);
CharacterInfo[playerid][character_Eingeloggt] = true;
TogglePlayerSpectating(playerid, false);
TogglePlayerControllable(playerid, true);
SetPlayerColor(playerid,COLOR_WHITE);
SetPlayerScore(playerid,CharacterInfo[playerid][character_Level]);
//SetPlayerProgressBarValue(playerid,BAR_Food[playerid],CharacterInfo[playerid][character_Food]);
//SetPlayerProgressBarValue(playerid,BAR_Thirst[playerid],CharacterInfo[playerid][character_Thirst]);
//UpdateHud(playerid);
//ShowHud(playerid);
SetPlayerHealth(playerid,health);
SetPlayerArmour(playerid,armour);
format(string,50,"Dein Account wurde in %d ms geladen",GetTickCount()-time);
if(!strcmp("Daniel",AccountInfo[playerid][account_Name])) SendInfo(playerid,string);
//CreatePlayer3DTextLabel(playerid, text[], color, Float:X, Float:Y, Float:Z, Float:DrawDistance, attachedplayer=INVALID_PLAYER_ID, attachedvehicle=INVALID_VEHICLE_ID, testLOS=0)
/* Charakterlabel */
//format(c_label, 60, "%s(%d)\n%0.2d%% | %0.2d%%",RemoveUnderscore(CharacterInfo[playerid][character_Name]),playerid,GetPlayerHealth(playerid, health), GetPlayerArmour(playerid, armour));
//format(c_label, 60, "%s(%d)\n%d%% | %d%%",RemoveUnderscore(CharacterInfo[playerid][character_Name]),playerid,GetPlayerHealth(playerid, health), GetPlayerArmour(playerid, armour));
GetPlayerHealth(playerid, health);
GetPlayerArmour(playerid, armour);
format(c_label, 60, "%s(%d)\n%0.0f%%% | %0.0f%%%",RemoveUnderscore(CharacterInfo[playerid][character_Name]),playerid, Float:health, Float:armour);
//format(c_label, 60, "%s(%d)\n%0.0f%% | %0.0f%%",RemoveUnderscore(CharacterInfo[playerid][character_Name]),playerid,Float:health, Float:armour);
//format(c_label, 60, "%s(%d)\n%0.0f%% | %0.0f%%",RemoveUnderscore(CharacterInfo[playerid][character_Name]),playerid,Float:health, Float:armour);
Spielerlabel[playerid] = Create3DTextLabel(c_label, COLOR_WHITE, 0.0, 0.0, 40.0, 20.0, 0, 1);
Attach3DTextLabelToPlayer(Spielerlabel[playerid], playerid, 0.0, 0.0, 0.3);
/* Inventar */
mysql_format(handle,string,sizeof(string),"SELECT * FROM `inventory` WHERE `CharacterID`='%d'",CharacterInfo[playerid][character_ID]);
mysql_tquery(handle,string,"LoadPlayerInventory","i",playerid);
/* Scheine */
mysql_format(handle,string,sizeof(string),"SELECT * FROM `character_license` WHERE `CharacterID`='%d'",CharacterInfo[playerid][character_ID]);
mysql_tquery(handle,string,"LoadPlayerLicense","i",playerid);
}
return 1;
}
Alles anzeigen
Edit: Ich hab auch dein Beispiel probiert, das geht leider auch net.
Achso oke machs so:
//So sollte es klappen
Codenew Float:armour; new Float:health; GetPlayerHealth(playerid, health); GetPlayerArmour(playerid, armour); format(c_label, 60, "%s(%d)\n%0.0f%%% | %0.0f%%%",RemoveUnderscore(CharacterInfo[playerid][character_Name]),playerid,Float:health, Float:armour);//edit hier nochmal mein beispiel
CodeAlles anzeigennew Float:armour; new Float:health; GetPlayerHealth(playerid, health); GetPlayerArmour(playerid, armour); new str1[126]; new str2[126]; format(str1, sizeof(str1),"Mein HP: %0.0f%%%",Float:health); format(str2, sizeof(str2),"Mein Armour: %0.0f%%%",Float:armour); SCM(playerid, ROT, str1); SCM(playerid, ROT, str2);
Funktioniert bei mir lieder nicht, da steht 0% | 0%%.
Mit dem steht 0% es sollte 100% da stehn.
Danke, leider passt dies nicht ganz. sollten die Anzeigen nicht in einer Ganzzahl dastehn?
Aktuell siehts so aus:
Hallo, ich möchte über dem Spielerkopf ein 3DTextlabel mit Leben und Rüstung haben, was muss ich schreiben, dass da die richtige Prozentzahl steht.
Aktuell sieht es so aus:
format(c_label, 60, "%s(%d)\n%0.2d%% | %0.2d%%",RemoveUnderscore(CharacterInfo[playerid][character_Name]),playerid,GetPlayerHealth(playerid, health), GetPlayerArmour(playerid, armour));
MfG
Nutze den U Parameter anstatt den I
if(sscanf(params,"u",id)) anstatt if(sscanf(params,"i",id))
So wie es jetzt ist muss ich ne Zahl angeben also /cac 1 aber ich möchte nur /cac.
Da steht dann trotzdem immernoch Benutze /cc, auch wenn ich die {} wegmache.
Hallo!
Ich steh bei folgenden Befehlen auf der Leitung.
ocmd:cac(playerid,params[])
{
new pID, id, string2[64], pname[MAX_PLAYER_NAME];
if(pID >= MAX_PLAYERS) return SendFehler(playerid,"Der angegebene Spieler ist nicht online");
if(!AccountInfo[pID][account_Eingeloggt] == false) return SendFehler(playerid,"Der angegebene Spieler ist nicht online");
if(sscanf(params,"i",id)) return SendFehler(playerid,"Verwendung: /cac");
{
for(new i; i<100; i++) SendClientMessageToAll(COLOR_WHITE,"");
GetPlayerName(playerid, pname, sizeof(pname));
format(string2,sizeof(string2),"Der gesamte Chat wurde von %s gelöscht",pname);
SendInfoToAll(string2);
format(string2,sizeof(string2),"Du hast den gesamten Chat gelöscht");
SendInfo(playerid,string2);
}
return 1;
}
Alles anzeigen
Mit dem sollte man den gesamten Chat löschen können.
ocmd:cc(playerid,params[])
{
new pID, id, string[64], pname[MAX_PLAYER_NAME];
if(pID >= MAX_PLAYERS) return SendFehler(playerid,"Der angegebene Spieler ist nicht online");
if(!AccountInfo[pID][account_Eingeloggt] == false) return SendFehler(playerid,"Der angegebene Spieler ist nicht online");
if(sscanf(params,"i",id)) return SendFehler(playerid,"Verwendung: /cc");
{
for(new i; i<100; i++) SendClientMessage(playerid,COLOR_WHITE,"");
GetPlayerName(playerid, pname, sizeof(pname));
format(string,sizeof(string),"Du hast deinen Chat gelöscht");
SendInfo(playerid, string);
}
return 1;
}
Alles anzeigen
Mit dem sollte man seinen eigenen Chat löschen können.
Beide Befehle funktionieren irgendwie nicht. Woran kann das liegen?
Den Wert speichern und dann wieder setzen.
CAlles anzeigenocmd:aduty(playerid) { new string[128],Float:health; if(AccountInfo[playerid][account_Admin] < CommandInfo[4][command_Admin] && AccountInfo[playerid][account_Mapper] != CommandInfo[4][command_Mapper] && AccountInfo[playerid][account_Scripter] != CommandInfo[4][command_Scripter])return SendErrorMessage_noRights(playerid); if(GetPVarInt(playerid,"aduty") == 0) { format(string,sizeof(string),"Server: {FFFFFF}%s ist nun als %s im Einsatz",AccountInfo[playerid][account_Name],GetAdminRang(AccountInfo[playerid][account_Admin],true)); GetPlayerHealth(playerid, health); SetPlayerHealth(playerid,10000); SetPVarInt(playerid,"aduty",1); SetPVarInt(playerid, "aduty_health", health); } else { format(string,sizeof(string),"Server: {FFFFFF}%s ist nun nicht mehr als %s im Einsatz",AccountInfo[playerid][account_Name],GetAdminRang(AccountInfo[playerid][account_Admin],true)); SetPlayerHealth(playerid,GetPVarInt(playerid, "aduty_health")); SetPVarInt(playerid,"aduty",0); } Log(playerid,LOG_TYPE_ADMIN,"/aduty"); SendClientMessageToAll(COLOR_ORANGE,string); return 1; }
Danke, habe es so probiert, jetzt sagt er mir bei SetPVarInt(playerid, "aduty_health", health); tag missmatch und wenn ich es ohne dem Flaot versuche, dan sagt er bei GetPlayerHealth(playerid, health); tag missmatch. Was ist da falsch?
Edit: Danke, hab Fehler gefunden, anstatt SetPVarInt und GetPVarInt muss es SetPVarInt und GetPVarFloat sein.
Hallo, ich möchte die Health bei aduty auf unendlich machen undqennamn rausgeht wieder auf dem wert davor, abver irgendwie funktioniert es nicht.
ocmd:aduty(playerid)
{
new string[128],Float:health;
if(AccountInfo[playerid][account_Admin] < CommandInfo[4][command_Admin] && AccountInfo[playerid][account_Mapper] != CommandInfo[4][command_Mapper] && AccountInfo[playerid][account_Scripter] != CommandInfo[4][command_Scripter])return SendErrorMessage_noRights(playerid);
if(GetPVarInt(playerid,"aduty") == 0)
{
format(string,sizeof(string),"Server: {FFFFFF}%s ist nun als %s im Einsatz",AccountInfo[playerid][account_Name],GetAdminRang(AccountInfo[playerid][account_Admin],true));
SetPlayerHealth(playerid,10000);
SetPVarInt(playerid,"aduty",1);
}
else
{
format(string,sizeof(string),"Server: {FFFFFF}%s ist nun nicht mehr als %s im Einsatz",AccountInfo[playerid][account_Name],GetAdminRang(AccountInfo[playerid][account_Admin],true));
SetPlayerHealth(playerid,health);
SetPVarInt(playerid,"aduty",0);
}
Log(playerid,LOG_TYPE_ADMIN,"/aduty");
SendClientMessageToAll(COLOR_ORANGE,string);
return 1;
}
Alles anzeigen
Health steht in der DB daher diese healt, aber wie mache ich dass wennman aus aduty geht man auf dem Healthwert ist wie vor dem aduty?
public OnPlayerConnect(playerid)
{
new string[128];
GetPlayerName(playerid,AccountInfo[playerid][account_Name],MAX_PLAYER_NAME);
mysql_format(handle, string, sizeof(string), "SELECT * FROM `accounts` WHERE `Name` = '%e'", AccountInfo[playerid][account_Name]);
mysql_tquery(handle, string, "AccountCheck", "d", playerid);
return 1;
}
Edit: Weiterer Fehler:
stock logindialog(playerid, response, inputtext[])
{
if(!response) return Kick(playerid);
if(6 <= strlen(inputtext) <= 24)
{
bcrypt_check(inputtext, AccountInfo[playerid][account_Passwort], "OnPasswordChecked", "d", playerid);
}
//else ShowPlayerDialog(playerid,DIALOG_PW_CHECK,DIALOG_STYLE_INPUT,"Falsches Passwort","Dein eingegebenes Passwort ist falsch!","Bestätigen","Abbrechen");
new query[256];
mysql_format(handle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%e' LIMIT 1", AccountInfo[playerid][account_Name]);
mysql_pquery(handle, query, "AccountLogin", "ds", playerid,inputtext);
return 1;
}
stock pwcheckdialog(playerid, response, inputtext[])
{
if(!response) return Kick(playerid);
if(!inputtext[0]) return ShowPlayerDialog(playerid,DIALOG_PW_CHECK,DIALOG_STYLE_INPUT,"Falsches Passwort","Dein eingegebenes Passwort ist falsch!","Bestätigen","Abbrechen");
bcrypt_check(inputtext, AccountInfo[playerid][account_Passwort], "OnPasswordChecked", "d", playerid);
return 1;
}
FUNCTION AccountLogin(playerid, inputtext[])
{
printf("ACL");
new rows;
cache_get_row_count(rows);
if(rows)
{
cache_get_value_name_int(0, "ID", AccountInfo[playerid][account_ID]);
cache_get_value_name(0, "Name", AccountInfo[playerid][account_Name]);
cache_get_value_name(0, "Password", AccountInfo[playerid][account_Passwort]);
cache_get_value_name_int(0, "Slot1", AccountInfo[playerid][account_Slot][0]);
cache_get_value_name_int(0, "Slot2", AccountInfo[playerid][account_Slot][1]);
cache_get_value_name_int(0, "Admin", AccountInfo[playerid][account_Admin]);
cache_get_value_name_int(0, "Mapper", AccountInfo[playerid][account_Mapper]);
cache_get_value_name_int(0, "Scripter", AccountInfo[playerid][account_Scripter]);
cache_get_value_name_int(0, "Maintenance", AccountInfo[playerid][account_Maintenance]);
cache_get_value_name_int(0, "Interact", AccountInfo[playerid][account_Interact]);
bcrypt_check(inputtext, AccountInfo[playerid][account_Passwort], "OnPasswordChecked", "d", playerid);
}
return 1;
}
FUNCTION OnPasswordChecked(playerid)
{
printf("OPWC");
new bool:match = bcrypt_is_equal();
new string[128];
if(!match) return ShowPlayerDialog(playerid,DIALOG_PW_CHECK,DIALOG_STYLE_INPUT,"Falsches Passwort","Dein eingegebenes Passwort ist falsch!","Bestätigen","Abbrechen");
//mysql_pquery(handle, query, "AccountLogin", "ds", playerid,inputtext);
mysql_format(handle, string, sizeof(string), "SELECT * FROM `character` WHERE `AccountID` = '%d'", AccountInfo[playerid][account_ID]);
mysql_tquery(handle, string, "ShowCharacter", "d", playerid);
return 1;
}
Alles anzeigen
So sieht meine Loginfunktion aus, somit wird überprüft oft das Passwort richtig ist. Irgendwas ist hier falsch, immer wenn ich das richtige Passwort eingebe komt der Dialog, dass das PW falsch ist.
FUNCTION AccountCheck(playerid)
{
printf("ACC");
new rows,string[255];
cache_get_row_count(rows);
if(rows)
{
format(string,sizeof(string),"{FFFFFF}Der Account {E8BD1A}%s {FFFFFF}wurde gefunden\nBitte melde dich an!",AccountInfo[playerid][account_Name]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmelden",string, "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
}
else
{
format(string,sizeof(string),"{FFFFFF}Der Account {E8BD1A}%s {FFFFFF}wurde nicht gefunden\nBitte erstelle dir einen Account!",AccountInfo[playerid][account_Name]);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Fehler",string, "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
}
return 1;
}
Alles anzeigen
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_REGISTER: registerdialog(playerid, response, inputtext);
}
return 1;
}
stock registerdialog(playerid, response, inputtext[])
{
if(!response) return Kick(playerid);
if(6 <= strlen(inputtext) <= 24)
{
bcrypt_hash(inputtext, BCRYPT_COST, "OnPasswordHashed", "d", playerid);
}
else ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{FFFFFF}Registration","{FFFFFF}Bitte gebe ein Passwort für deinen Account an!","{FFFFFF}Bestätigen","{FFFFFF}Abbrechen");
return 1;
}
Alles anzeigen
Aus irgendeinem Grund sagt mir das Game jetzt is ist ein Account vorhanden obwohl keiner da ist.
Edit: Hab den Fehler gefunden, hab die dialoge vertauscht, darum stahd da der acc wurde gefunden.
das bringt irgendwie nix, ich werde bei abbrechen immernoch nicht gekickt. muss dan ich t bei Accpuntcheckauch was hin?
Edit: Fail, ich hatte bei accountcheck if(rows == 0)
Jetzt wird alles richtig aufgerufen. Was muss ich machen wenn ich bei AccountCheck nen Abbrechen Button habe damit man gekickt wird?
Edit: Wenn ich aktuell auf Esc drücke und nichts eingebe komme ich trotzdem weiter.
Hab ich gemacht, es finktoiert jetzt. Ist es normal dass dann nurmehr accountcheck und registerdialog geprintet bzw aufgerufen werden?