[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
  • Hey Leutz^^


    ich habe folgendes Problem. Ich möchte gerne meine Adminränge auslesen und wiedergeben nur funktioniert das nicht so ganz wie es mir erklärt wurde.





    GetGMRang(playerid)
    {
    new arang[25];
    switch(sInfo[playerid][Adminlevel])
    {
    case 1:arang="[GS]Gamesage";
    case 2:arang="[GM]Gamemaster";
    case 3:arang="[ADM]Admin";
    }
    return arang;
    }


    ocmd:aduty(playerid,params[])
    {
    if(!IsPlayerGM(playerid,1)) return 1;
    if(!AdmOnDuty{playerid})
    {
    new string[124];
    format(string,sizeof(string),"* %s ist nun als %s im Dienst! *",getPlayerName(playerid),GetGMRang(playerid));
    SendClientMessageToAll(FARBE_BLAU,string);
    SetPlayerColor(playerid, FARBE_ROT);
    AdmOnDuty{playerid}=true;
    CMDLog(string);
    }
    else
    {
    new string[124];
    format(string,sizeof(string),"* %s ist nun nicht mehr als %s im Dienst! *",getPlayerName(playerid),GetGMRang(playerid));
    SendClientMessageToAll(FARBE_BLAU,string);
    SetPlayerColor(playerid, -1);
    AdmOnDuty{playerid}=false;
    CMDLog(string);
    }
    return 1;
    }



    Dort steht dann PLAYER X ist nun als im Dienst, kann mir jemand sagen wo der fehler liegt?

  • @xPatrick
    Nutze mal bitte dies, und sage uns was dann in der Konsole steht wenn du die Funktion nutzen tust.

    GetGMRang(playerid)
    {
    new string[36];
    switch(sInfo[playerid][Adminlevel]) {
    case 1: string = "[GS]Gamesage";
    printf("Case 1: %s", string);
    case 2: string = "[GM]Gamemaster";
    printf("Case 2: %s", string);
    case 3: string = "[ADM]Admin";
    printf("Case 3: %s", string);
    }
    return string;
    }


    Mit freundlichen Grüßen,
    Aaron!

    Die Missglückte Persönlichkeit, Ciao!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • @xPatrick
    Nutze mal bitte dies, und sage uns was dann in der Konsole steht wenn du die Funktion nutzen tust.
    GetGMRang(playerid){ new string[36]; switch(sInfo[playerid][Adminlevel]) { case 1: string = "[GS]Gamesage"; printf("Case 1: %s", string); case 2: string = "[GM]Gamemaster"; printf("Case 2: %s", string); case 3: string = "[ADM]Admin"; printf("Case 3: %s", string); } return string;}


    Mit freundlichen Grüßen,
    Aaron!

    C:\Users\Paddz\Desktop\Neuer Ordner\gamemodes\Roleplay.pwn(1010) : error 002: only a single statement (or expression) can follow each "case"
    C:\Users\Paddz\Desktop\Neuer Ordner\gamemodes\Roleplay.pwn(1010) : warning 215: expression has no effect
    C:\Users\Paddz\Desktop\Neuer Ordner\gamemodes\Roleplay.pwn(1011) : error 014: invalid statement; not in switch
    C:\Users\Paddz\Desktop\Neuer Ordner\gamemodes\Roleplay.pwn(1011) : warning 215: expression has no effect
    C:\Users\Paddz\Desktop\Neuer Ordner\gamemodes\Roleplay.pwn(1011) : error 001: expected token: ";", but found ":"
    C:\Users\Paddz\Desktop\Neuer Ordner\gamemodes\Roleplay.pwn(1011) : error 029: invalid expression, assumed zero
    C:\Users\Paddz\Desktop\Neuer Ordner\gamemodes\Roleplay.pwn(1011) : fatal error 107: too many error messages on one line


    Funktionier so nicht^^ Sorry bin noch ein Noob wasdas scripten angeht. Sollte ich etwas offensichtliches Vergessen haben, sagts mir

  • @Aaron1337 die Funktion ist so korrekt, diese vor allem so zu überprüfen ist unnötig.


    @xPatrick zeig mir mal bitte wie und wo du die Funktion aufrufst.


    ocmd:aduty(playerid,params[])
    {
    if(!IsPlayerGM(playerid,1)) return 1;
    if(!AdmOnDuty{playerid})
    {
    new string[128];
    format(string,sizeof(string),"* %s ist nun als %s im Dienst! *",getPlayerName(playerid),GetGMRang(playerid));
    SendClientMessageToAll(FARBE_BLAU,string);
    SetPlayerColor(playerid, FARBE_ROT);
    AdmOnDuty{playerid}=true;
    CMDLog(string);
    }


    Zum Beispiel hier. Es steht dann jetzt mit euren Ergebnissen nach wie vor Spieler X ist nun als im Dienst

  • @Aaron1337 die Funktion ist so korrekt, diese vor allem so zu überprüfen ist unnötig.

    Weshalb sollte dies unnötig sein?
    Was ist wenn er die Veriable gar nicht gesetzt hat, dann hätte wir den Fehler direkt gefunden?
    Oder nicht richtig Laden/Speichern tut?


    @xPatrick
    Tue mir bitte einen Gefallen und nutze dies einmal und sage dann ob es dann geht.



    ocmd:aduty(playerid,params[])
    {
    if(!IsPlayerGM(playerid,1)) return 1;
    if(!AdmOnDuty{playerid})
    {
    sInfo[playerid][Adminlevel] = 3;
    new string[128];
    format(string,sizeof(string),"* %s ist nun als %s im Dienst! *",getPlayerName(playerid),GetGMRang(playerid));
    SendClientMessageToAll(FARBE_BLAU,string);
    SetPlayerColor(playerid, FARBE_ROT);
    AdmOnDuty{playerid}=true;
    CMDLog(string);
    }
    }

    Die Missglückte Persönlichkeit, Ciao!

  • Du kannst nicht überall die geschweiften Klammern ("{}") benutzen.

    ocmd:aduty(playerid,params[])
    {
    if(!IsPlayerGM(playerid,1)) return 1;
    if(!AdmOnDuty[playerid])
    {
    new string[128];
    format(string,sizeof(string),"* %s ist nun als %s im Dienst! *",getPlayerName(playerid),GetGMRang(playerid));
    SendClientMessageToAll(FARBE_BLAU,string);
    SetPlayerColor(playerid, FARBE_ROT);
    AdmOnDuty[playerid]=true;
    CMDLog(string);
    }
    return 1;
    }

  • Du kannst nicht überall die geschweiften Klammern ("{}") benutzen.
    ocmd:aduty(playerid,params[]){ if(!IsPlayerGM(playerid,1)) return 1; if(!AdmOnDuty[playerid]) { new string[128]; format(string,sizeof(string),"* %s ist nun als %s im Dienst! *",getPlayerName(playerid),GetGMRang(playerid)); SendClientMessageToAll(FARBE_BLAU,string); SetPlayerColor(playerid, FARBE_ROT); AdmOnDuty[playerid]=true; CMDLog(string); } return 1;}

    Weshalb sollte dies unnötig sein?Was ist wenn er die Veriable gar nicht gesetzt hat, dann hätte wir den Fehler direkt gefunden?
    Oder nicht richtig Laden/Speichern tut?


    @xPatrick
    Tue mir bitte einen Gefallen und nutze dies einmal und sage dann ob es dann geht.


    ocmd:aduty(playerid,params[]){ if(!IsPlayerGM(playerid,1)) return 1; if(!AdmOnDuty{playerid}) { sInfo[playerid][Adminlevel] = 3; new string[128]; format(string,sizeof(string),"* %s ist nun als %s im Dienst! *",getPlayerName(playerid),GetGMRang(playerid)); SendClientMessageToAll(FARBE_BLAU,string); SetPlayerColor(playerid, FARBE_ROT); AdmOnDuty{playerid}=true; CMDLog(string); }}

    Ok Jungs, jeder eurer Vorschläge hat funktioniert. Ich habe bei AdmRang {} benutzt weil es so in einen Tutorial gezeigt wurde, ist ein bool.
    Also danke. Ich nehme jetzt malE Variante, da ich da 1 Zeile spare^^ danke euch


  • FastFoodBiz[i][FastFoodActor] = CreateActor(68,375.5763,-65.5976,1001.5078,178.5633); //4779
    SetActorVirtualWorld(FastFoodBiz[i][FastFoodActor], i); //4780




    C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German 0.3z\gamemodes\German.pwn(4779) : error 017: undefined symbol "CreateActor"
    C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German 0.3z\gamemodes\German.pwn(4780) : error 017: undefined symbol "SetActorVirtualWorld"

  • FastFoodBiz[i][FastFoodActor] = CreateActor(68,375.5763,-65.5976,1001.5078,178.5633); //4779SetActorVirtualWorld(FastFoodBiz[i][FastFoodActor], i); //4780



    C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German 0.3z\gamemodes\German.pwn(4779) : error 017: undefined symbol "CreateActor"C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German 0.3z\gamemodes\German.pwn(4780) : error 017: undefined symbol "SetActorVirtualWorld"

    Kannst du denn einen Actor normal erstellen, ohne dein FastfoodBiz... oder kommen da die selben Fehler?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen