Compiler stürzt ab

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
  • Guten Tag,
    wenn ich mein Script compile, stürzt der Compiler ab. Ich weiß, dass es am ocmd:tprison liegt, da das normale /prison klappt.
    Bei TPrison wollte ich es an meine Adminabfrage anpassen, da ich allerdings Neuling bin, passieren mir gerne Fehler:


    Hier das Prisonsystem (welches ich als Filterscript gedownloaded habe und dann ins Script eingefügt habe):

    Spoiler anzeigen
    forward PrisonTimer(pID);
    ocmd:tprison(playerid, params);
    {
    new giveplayerid=GetPVarInt(playerid,"AdminSysPlayer");
    new cache[32],respond[64];
    if(GetPVarInt(playerid,"PlayerStep")>1)
    {
    format(respond,sizeof(respond),"The Way to Ascension - %s [%s]",gPlayerAdminInformation[GetPVarInt(playerid,"PlayerStep")-2][aText],GetName(giveplayerid));
    GetPVarString(playerid,"AdminChosen",cache,sizeof(cache));
    }
    else
    {
    format(string,sizeof(string), "Du steckst %s in das Prison für %iMinuten, Grund: %s", SpielerName(pID), zeitangabe, prisongrund);
    SendClientMessage(playerid, -1, string);
    format(string,sizeof(string), "Du wurdest von %s für %iMinuten in das Prison gesteckt, Grund: %s", SpielerName(playerid), zeitangabe, prisongrund);
    SendClientMessage(pID, -1, string);
    SetPlayerPos(pID, 2543.462646,-1308.379882,1026.728393);
    SetPlayerInterior(pID, 2);
    SetPVarInt(playerid,"PrisonTime", zeitangabe);
    SetPVarInt(playerid,"Prison", 1);
    SetTimerEx("PrisonTimer",60000,1,"d",pID);
    }
    return 1;
    }
    ocmd:prison(playerid, params[])
    {
    new string[128], pID, zeitangabe, prisongrund;
    if(GetPVarInt(playerid, "Adminlevel") != 1)return SendClientMessage(playerid, -1, " Dein Adminlevel ist zu niedrig!");
    if(sscanf(params,"uds",pID, zeitangabe, prisongrund))return SendClientMessage(playerid, -1, "Benutzung: /prison [Name/ID] [Zeit in Minuten] [Grund]");
    if(GetPVarInt(pID, "Prison") == 1)return SendClientMessage(playerid, -1, " Der Spieler ist bereits im Prison!");
    {
    format(string,sizeof(string), "Du steckst %s in das Prison für %iMinuten, Grund: %s", SpielerName(pID), zeitangabe, prisongrund);
    SendClientMessage(playerid, -1, string);
    format(string,sizeof(string), "Du wurdest von %s für %iMinuten in das Prison gesteckt, Grund: %s", SpielerName(playerid), zeitangabe, prisongrund);
    SendClientMessage(pID, -1, string);
    SetPlayerPos(pID, 2543.462646,-1308.379882,1026.728393);
    SetPlayerInterior(pID, 2);
    SetPVarInt(playerid,"PrisonTime", zeitangabe);
    SetPVarInt(playerid,"Prison", 1);
    SetTimerEx("PrisonTimer",60000,1,"d",pID);
    }
    return 1;
    }

    Spoiler anzeigen
    public PrisonTimer(pID)
    {
    SetPVarInt(pID,"PrisonTime",GetPVarInt(pID,"PrisonTime")-1);
    if(GetPVarInt(pID, "PrisonTime") == 0)
    {
    SendClientMessage(pID, -1, "Du hast deine Zeit im Prison abgearbeitet!");
    SetPVarInt(pID,"PrisonTime", 0);
    SetPVarInt(pID,"Prison", 0);
    SpawnPlayer(pID);
    }
    return 1;
    }
    stock LoadAccount(playerid)
    {
    SetPVarInt(playerid,"PrisonTime",dini_Int(Spielerdatei,"PrisonTime"));
    SetPVarInt(playerid,"Prison",dini_Int(Spielerdatei,"Prison"));

    Spoiler anzeigen
    if(GetPVarInt(playerid,"PrisonTime") > 1)
    {
    new string[128];
    format(string,sizeof(string), "Du hast deine Prisonzeit noch nicht abgearbeitet, noch %dMinuten", GetPVarInt(playerid,"PrisonTime"));
    SendClientMessage(playerid, -1, string);
    SetPlayerPos(playerid, 2543.462646,-1308.379882,1026.728393);
    SetPlayerInterior(playerid, 2);
    SetTimerEx("PrisonTimer",60000,1,"d",playerid);

    Spoiler anzeigen
    return 1;
    }

    Spoiler anzeigen
    stock SpielerSpeichern(playerid)
    {
    dini_IntSet(Spielerdatei,"PrisonTime",GetPVarInt(playerid,"PrisonTime"));
    dini_IntSet(Spielerdatei,"Prison",GetPVarInt(playerid,"Prison"));

    Spoiler anzeigen
    return 1;
    }

    Spoiler anzeigen
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    Hier mal eine Beispiel abfrage:
    http://pastebin.com/G1hrBFQQ


    Kann mir jemand erklären wie genau bei meinem Script das Adminlevel abgefragt wird, ich möchte es auch endlich verstehen, lernen, umsetzten.

  • ocmd:tprison(playerid, params);
    {


    Schreib das so:


    ocmd:tprison(playerid, params[])
    {


    Kann mir jemand erklären wie genau bei meinem Script das Adminlevel abgefragt wird, ich möchte es auch endlich verstehen, lernen, umsetzten.


    In diesem PVar:


    new admin_level = GetPVarInt(playerid, "Adminlevel"); //Um das mal ausführlich zu zeigen mit extra Variable
    if(admin_level >= 1) //So kannst du abfragen ob der Spieler Admin ist


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Hab grad nochmal ausprobiert, ich glaube du hast mich ein bisschen missverstanden.
    Das Prisonsystem habe ich gedownloaded und in mein Script eingefügt. Da ich nicht genau weiß, wie bei meinem Script die Adminabfrage ist, habe ich rumprobiert. Das tprison ist mein versuch, das prison ist der vorgefertigte, welcher auch funktioniert, bis auf, dass die Meldung kommt, mein ALevel reicht nicht aus (was klar ist, da es ja eine standart Abfrage ist).


    Deshalb habe ich in der o.g. Pastebin mal ein Teil meines Scriptes gezeigt, wo ich vermute, dass da eine Andminabfrage enthalten ist.


    Ich hoffe du erkennst es und kannst mir sagen, wie ich es einzufügen habe.

  • Poste am besten einen deiner Admin-Befehle,


    Ich denke mal, dass ist meine Abfrage:
    if(GetPVarInt(playerid,"SpielerAdmin")<1) return SendRightError(playerid,1);


    Spoiler anzeigen
    if(!strcmp(cmdtext, "aond", true) || !strcmp(cmdtext, "adminonduty", true))
    {
    if(GetPVarInt(playerid,"SpielerAdmin")<1) return SendRightError(playerid,1);
    new aond = GetPVarInt(playerid,"SpielerAdminOnDuty");

    Spoiler anzeigen
    // Überprüfen, ob er noch ein offenes Ticket hat, wenn er angemeldet ist
    if(!CallRemoteFunction("LoginPlayerToTicketSys","d",playerid)) return 1;

    Spoiler anzeigen
    if(aond > 0) {
    format(FormatString,FormatStringLength,"* %s hat sich vom AdminDienst abgemeldet. *", GetName(playerid));
    ProxDetector(playerid, FormatString, 30.0);
    }
    else {
    format(FormatString,FormatStringLength,"*** %s hat sich für den AdminDienst angemeldet. ***", GetName(playerid));
    ProxDetector(playerid, FormatString, 30.0);
    SendClientMessage(playerid,COLOR_WHITE,"INFO für Ticketbearbeitung: /topen /tmsg / tclose");
    }
    SetPVarInt(playerid,"SpielerAdminOnDuty",(aond>0?0:1));
    RefreshPlayerWeaponSkill(playerid);
    return 1;
    }

  • Dann ersetze:
    if(GetPVarInt(playerid, "Adminlevel") != 1)return SendClientMessage(playerid, -1, " Dein Adminlevel ist zu niedrig!");
    mit:
    if(GetPVarInt(playerid,"SpielerAdmin")<1) return SendRightError(playerid,1);


    und bei deinem tprison Befehl kannst du die Zeile direkt nach
    ocmd:tprison(playerid, params);
    {
    einfügen.