Es gibt leider keinen brauchbaren log.
Beiträge von Allrounder18
-
-
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.
Code
Alles anzeigenFUNCTION 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; }
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
Code
Alles 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:
Codeformat(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.
Code
Alles anzeigenocmd: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; }
Mit dem sollte man den gesamten Chat löschen können.
Code
Alles anzeigenocmd: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; }
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.
C
Alles 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.
Code
Alles 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)); 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; }
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?
-
Code
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:
Code
Alles anzeigenstock 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; }
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.
-
Code
Alles anzeigenFUNCTION 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; }
-
Code
Alles anzeigenpublic 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; }
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?
-
Hallo!
Ich bin gerade dabei mein Registersystem zu bearbeiten, jedoch habe ich ein kleines Problem.
Code
Alles anzeigenpublic OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { registerdialog(playerid, dialogid, inputtext); return 1; } stock registerdialog(playerid, dialogid, inputtext[]) { printf("regdia"); switch(dialogid) { case DIALOG_REGISTER: { ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registration","Bitte gib ein Passwort für deinen Account an:","Bestätigen","Abbrechen"); if(6 <= strlen(inputtext) <= 24) { bcrypt_hash(inputtext, BCRYPT_COST, "OnPasswordHashed", "d", playerid); } return 1; } } return 1; } FUNCTION AccountCheck(playerid) { printf("ACC"); new rows,string[255]; cache_get_row_count(rows); if(rows == 0) { 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", ""); //SetTimerEx("KickPlayer", 100, false, "i", playerid); } else { 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", ""); //SetTimerEx("KickPlayer", 100, false, "i", playerid); } return 1; } FUNCTION OnPasswordHashed(playerid) { printf("OPWH"); new hash[BCRYPT_HASH_LENGTH],query[256]; bcrypt_get_hash(hash); mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`) VALUES ('%e', '%e')", AccountInfo[playerid][account_Name], hash); mysql_pquery(handle, query, "AccountRegister", "d", playerid); return 1; } FUNCTION AccountRegister(playerid) { printf("ACR"); AccountInfo[playerid][account_ID] = cache_insert_id(); AccountInfo[playerid][account_Eingeloggt] = true; //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; }
Aus irgendeinem Grund wird der Register Dialog doppelt angezeigt. Die Funktionen werden alle aufgerufen, jedoch doppelt, sodass ich zwei mal den gleichen Account mit unterschiedlichem PW in der DB habe. Was ist da inkorrekt?
MfG
Allrounder18