[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Werden die Namen denn ohne die Funktion angezeigt?


    Übertragst du denn auch richtig die Namen in diese Variablen? ^^

    Mei Fehler liegt wohl daran, das nichtmal OnPlayer Login aufgeufe wird.


    Hier mein OnPlayerRequestClass


    Hier mein OnUserCheck


    Edit: Der Name wird jetzt ausgelsen, da sich das andere Problem erledigt hat.

  • Hallo habe ein Problem die ServerInfo wird in der Datenbank geupdatet aber nicht richtig er löscht denn vorhandenen servernamen weg und schreib garnix rein.
    Hier wird ServerInfo[servername] auf Inputtext gesetzt im Print steht auch der Inputtext.
    Aber sobald ich in SaveServerInfo | ServerInfo[servername] abfrage kommt im print nix raus.

    if(dialogid == DIALOG_SERVERINFO_SERVERNAME)
    {
    if(response)
    {
    new input[30];
    format(input,sizeof(input),"%s", inputtext);
    ServerInfo[servername] = input[25];
    printf("%s",input);
    new log[120];
    format(log,sizeof(log),"%s hat den Servernamen zu %s geändert", PlayerInfo[playerid][pName], input);
    Log("Serververwaltung",log);
    SaveServerInfo();
    }
    else
    {
    SCM(playerid,ROT,"Vorgang Abgebrochen!");
    }
    return 1;
    }



    stock SaveServerInfo()
    {
    new query[600];
    printf("Vorher: %s",ServerInfo[servername]); //hier kommt nix
    mysql_format(handle, query, sizeof(query), "UPDATE server_info SET servername = '%s',servertag = '%s',slogan = '%s',serverversion = '%s',scripter = '%s',inhaber = '%s',mapname = '%s',weburl = '%s',ucpurl = '%s',tsip = '%s'",
    ServerInfo[servername],
    ServerInfo[servertag],
    ServerInfo[slogan],
    ServerInfo[serverversion],
    ServerInfo[scripter],
    ServerInfo[inhaber],
    ServerInfo[mapname],
    ServerInfo[weburl],
    ServerInfo[ucpurl],
    ServerInfo[tsip]);
    mysql_pquery(handle, query);
    printf("nachher: %s",ServerInfo[servername]); // hier kommt nix
    return query;
    }

    Einmal editiert, zuletzt von Abbas ()

  • Hallo habe ein Problem die ServerInfo wird in der Datenbank geupdatet aber nicht richtig er löscht denn vorhandenen servernamen weg und schreib garnix rein.
    Hier wird ServerInfo[servername] auf Inputtext gesetzt im Print steht auch der Inputtext.
    Aber sobald ich in SaveServerInfo | ServerInfo[servername] abfrage kommt im print nix raus.
    if(dialogid == DIALOG_SERVERINFO_SERVERNAME) { if(response) { new input[30]; format(input,sizeof(input),"%s", inputtext); ServerInfo[servername] = input[25]; printf("%s",input); new log[120]; format(log,sizeof(log),"%s hat den Servernamen zu %s geändert", PlayerInfo[playerid][pName], input); Log("Serververwaltung",log); SaveServerInfo(); } else { SCM(playerid,ROT,"Vorgang Abgebrochen!"); } return 1; }


    stock SaveServerInfo(){ new query[600]; printf("Vorher: %s",ServerInfo[servername]); //hier kommt nix mysql_format(handle, query, sizeof(query), "UPDATE server_info SET servername = '%s',servertag = '%s',slogan = '%s',serverversion = '%s',scripter = '%s',inhaber = '%s',mapname = '%s',weburl = '%s',ucpurl = '%s',tsip = '%s'", ServerInfo[servername], ServerInfo[servertag], ServerInfo[slogan], ServerInfo[serverversion], ServerInfo[scripter], ServerInfo[inhaber], ServerInfo[mapname], ServerInfo[weburl], ServerInfo[ucpurl], ServerInfo[tsip]); mysql_pquery(handle, query); printf("nachher: %s",ServerInfo[servername]); // hier kommt nix return query;}



    if(dialogid == DIALOG_SERVERINFO_SERVERNAME)
    {
    if(response)
    {
    new input[30];
    format(input,sizeof(input),"%s", inputtext);
    format(ServerInfo[servername], 25, "%s" inputtext);
    printf("%s",input);
    new log[120];
    format(log,sizeof(log),"%s hat den Servernamen zu %s geändert", PlayerInfo[playerid][pName], input);
    Log("Serververwaltung",log);
    SaveServerInfo();
    }
    else
    {
    SCM(playerid,ROT,"Vorgang Abgebrochen!");
    }
    return 1;
    }


    So vllt?

  • //edit neuer fehler


    error #1064 while executing query "UPDATE server_info SET servername = 'Selfmade Reallife',servertag = '[XYZ]',slogan = 'Das ist mein Server Slogan',serverversion = 'XYZ v0.1',scripter = 'RooT',inhaber = 'RooT',mapname = 'San Andreas',weburl = 'www.Selfmade-Reallife.de',ucpurl = 'ucp.Selfmade-Reallife.de',tsip = 'ts.Selfmade-Reallife.de',noobX = '0.000000',noobY = '0.000000',noobZ = '0.000000',": You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1




    stock SaveServerInfo()
    {
    new query[600];
    printf("Vorher: %s",ServerInfo[servername]);
    mysql_format(handle, query, sizeof(query), "UPDATE server_info SET servername = '%s',servertag = '%s',slogan = '%s',serverversion = '%s',scripter = '%s',inhaber = '%s',mapname = '%s',weburl = '%s',ucpurl = '%s',tsip = '%s',noobX = '%f',noobY = '%f',noobZ = '%f',",
    ServerInfo[servername],
    ServerInfo[servertag],
    ServerInfo[slogan],
    ServerInfo[serverversion],
    ServerInfo[scripter],
    ServerInfo[inhaber],
    ServerInfo[mapname],
    ServerInfo[weburl],
    ServerInfo[ucpurl],
    ServerInfo[tsip],
    ServerInfo[noobX],
    ServerInfo[noobY],
    ServerInfo[noobZ]);


    mysql_pquery(handle, query);
    printf("nachher: %s",ServerInfo[servername]);
    return query;
    }

    2 Mal editiert, zuletzt von Abbas ()

  • Neues Problem .
    Nur ServerInfo[noobX] wird im Dialog angezeigt.




    new string[150];
    format(string,sizeof(string),"Aktueller Noob Spawn: %f, %f, %f \n\nMöchtest du hier die Neue Spawnposition haben ?", ServerInfo[noobX], ServerInfo[noobY], ServerInfo[noobZ]); // Hier im Dialog wird nur ServerInfo[noobX] angezeigt.
    SPD(playerid,DIALOG_SERVERINFO_NOOBPOS,DIALOG_STYLE_MSGBOX,"Serververwaltung: Inhaber",string,"Ja","Nein");

  • Wird nur nicht Angezeit aber wird in die DB eingetragen.
    [b]enum[/b] sDataEnum
    {
    servername[25],
    servertag[6],
    slogan[30],
    serverversion[10],
    scripter[MAX_PLAYER_NAME],
    inhaber[MAX_PLAYER_NAME],
    mapname[15],
    weburl[25],
    ucpurl[25],
    tsip[35],
    Float:noobX[15],
    Float:noobY[15],
    Float:noobZ[15]
    }
    [b]new[/b] ServerInfo[sDataEnum];



    [b]if[/b](dialogid == DIALOG_SERVERINFO_NOOBPOS)
    {
    [b]if[/b](response)
    {
    [b]new[/b] Float:Pos[3];
    GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
    ServerInfo[noobX] = Pos[0];
    ServerInfo[noobY] = Pos[1];
    ServerInfo[noobZ] = Pos[2];
    printf("%f %f %f",ServerInfo[noobZ],ServerInfo[noobZ],ServerInfo[noobZ]);
    [b]new[/b] log[120];
    format(log,sizeof(log),"%s hat die Nobbspawn Position zu %f,%f,%f geändert", PlayerInfo[playerid][pName], Pos[0], Pos[1], Pos[2]);
    Log("Serververwaltung",log);
    SaveServerInfo();
    }
    [b]else[/b]
    {
    SCM(playerid,ROT,"Vorgang Abgebrochen!");
    }
    [b]return[/b] 1;
    }

  • Bin zwar nicht wirklich erfahren aber versuch mal folgendes im Dialog



    Code
    GetPlayerPos(playerid,Float:Pos[0],Float:Pos[1],Float:Pos[2]);

    ansonsten versuch es mal mit mal mit einer Variable für je eine Koordinate heißt PosX, PosY, PosZ

    MfG. Adrian

    Einmal editiert, zuletzt von SkeeZy ()

  • Ich habs gelesen, nur ist da vllt. ein Unterschied zwischen SQL und dem Enum. Wie gesagt bin ich nicht sehr erfahren, möchte aber trotzdem gern meine Lösungsideen äußern. Viellecht ist die Zeile auch zu lang, wenn alle drei angezeigt werden müssen, weshalb es den Rest abscheidet.

    MfG. Adrian

  • an zu lang liegt es nicht habe den String auch vergrößert und habe es auch nicht mit noobX noobY noobZ versucht

  • Moin!


    Ich möchte bim Login prüfen ob der Name stimmt, damit man ihn ansonsten ändern an im dialog. wie mache ich das am besten?


    Folgenderr Lösungsansatz klappt keider icht.

    Code
    if(!response)return Kick(playerid);
    			if(!strfind(inputtext,UserDaten[playerid][user_Name]))
    			{
    				SendClientMessage(playerid,ROT,"Der angegebene Name ist falsch");
    				return ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_INPUT, "{FFFFFF}Anmeldung", "{FFFFFF}Gib bitte deinen OOC Namen ein.", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    			}
    			return 1;





    Danke im Voraus


    Allrounder18


    Edit: Habs jetzt folgendermaßen gelöst.

    Jetzt sagt er mir unreachable Code bei return 1; und "Dieser Name ist falsch" obwohl ich ihn gleich beim ersten mal richtig eingeb. Woran liegt das?

  • mach das return1; weg. Ist eben wie der Compiler schon sagt "unreachable code" => Der Code wird nicht erreicht.
    Du hast eine if -else Verzweigung wo in beiden Fällen ein return stattfindet somit kann das statement am ende "return 1"; nicht erreicht werden. Entweder im ersten Codeblock oder im zweiten wird bereits returned.

    MFG

  • Wieso überhaupt strfind?


    Mach das:

    Code
    if(strfind(inputtext,UserDaten[playerid][user_Name]) !=UserDaten[playerid][user_Name])


    zu dem:


    Code
    if(!strcmp(inputtext,UserDaten[playerid][user_Name]))

    DAmit vergleichst du zwei Strings Miteinander. Sollten die nicht gleich sehen geht er in den Block ansetzten in den Else Zweig

    MFG