Prison System

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
  • wenn du mit mysql arbeitest müsste das in etwa so aussehen, ungetestet


    forward armygII();


    ocmd:rangeban(playerid,params[])
    {
    if(IstSpielerAdmin(playerid, 5))//anpassen
    {
    new pID, reason[128], string[128]; //die defines die wir später brauchen
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid, 0xAFAFAFAA, "Benutze: /prison [ID] [Grund]");
    format(string,sizeof(string),"[ADMCMD]: %s wurde von Admin %s ins Admin Prison geschickt Grund: %s", SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(0xFF4122FF,string);
    SetPlayerPos(i,//koordinate vom AP);
    SetTimer("Prison",60000,true);//timer geht 60 min
    SpielerInfo[i][Prison]=1;
    }
    else
    {
    SendClientMessage(playerid,0xAFAFAFAA,"Du bist kein Admin!");
    }
    return 1;


    }
    so jetzt brauchst du noch das es abgespeichert wird und was passiert
    unten im script machst du den.


    public prison()
    {
    SpielerInfo[i][Prisontime]+=1; //in die spieler datei wird jeweils jede minute +1 gemacht
    {
    if(SpielerInfo[i][Prisontime]==60) //ist dann der wert auf 60 kommt dies
    {
    SetPlayerPos(i,//koordinaten zum rauskommen);
    SpielerInfo[i][Prisontime]=0;
    SpielerInfo[i][Prison]=0;



    }
    }
    return 1;
    }


    dann noch in dein enum das es abgespeichert wird


    Prison,
    Prisontime,


    nun muss du es noch laden und speichern


    beim ladenstock machst du
    SpielerInfo[playerid][Prison] = mysql_GetInt("accounts", "Prison", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Prisontime] = mysql_GetInt("accounts", "Prisontime", "Name", SpielerInfo[playerid][pName]);


    beim speicherstock
    mysql_SetInt("accounts", "Prison", SpielerInfo[playerid][Prison], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Prisontime", SpielerInfo[playerid][Prisontime], "Name", SpielerInfo[playerid][pName]);


    dann noch bei onplayerconnect


    if(SpielerInfo[playerid][Prison]==1)
    {
    Kick(playerid);
    }
    else
    {}


    wiegesagt ungetestet söllte aber funktionieren.


    falls du mit Dini arbeitest einfach uimschereiben


    MfG Music4You

  • SpielerInfo[playerid][Prison] = mysql_GetInt("accounts", "Prison", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Prisontime] = mysql_GetInt("accounts", "Prisontime", "Name", SpielerInfo[playerid][pName]);



    mysql_SetInt("accounts", "Prison", SpielerInfo[playerid][Prison], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Prisontime", SpielerInfo[playerid][Prisontime], "Name", SpielerInfo[playerid][pName]);


    Kann mir jemand das bitte in dini umschreiben? Ich kriegs nicht hin. Wäre sehr sehr nett

  • Das ganze ist ja eigentlich nicht so schwer, es würde sogar reichen wenn du einfach nur die Zeit speicherst und lädst die der Spieler im Gefängnis verbringen soll. Das ist fast das gleich wie mit Dini. Ich würde dir nicht raten von MySQL auf Dini umzusteigen. Sonst fange doch erstmal damit an das du überhaupt einen Wert speicherst und lädst und du den Spieler beim Login in das Gefängnis teleportierst. Dann musst du später mit dem Befehl nur noch den entsprechenden Wert setzen. :rolleyes:

  • Ich bekomme diese erros
    C:\Users\WBF Küchen\Desktop\Selfmade\gamemodes\Selfmade.pwn(1584) : warning 219: local variable "pID" shadows a variable at a preceding level
    C:\Users\WBF Küchen\Desktop\Selfmade\gamemodes\Selfmade.pwn(1586) : error 017: undefined symbol "SpielerName"
    C:\Users\WBF Küchen\Desktop\Selfmade\gamemodes\Selfmade.pwn(1588) : error 017: undefined symbol "i"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    Code:
    ocmd:rangeban(playerid,params[])
    {
    if(isPlayerInFrakt(playerid,2))
    {
    new pID, reason[128], string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid, 0xAFAFAFAA, "Benutze: /prison [ID] [Grund]");
    format(string,sizeof(string),"[ADMCMD]: %s wurde von Admin %s ins Admin Prison geschickt Grund: %s", SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(0xFF4122FF,string);
    SetPlayerPos(i,223.3961,110.5082,1010.2188);
    SetTimer("Prison",60000,true);
    }
    else
    {
    SendClientMessage(playerid,0xAFAFAFAA,"Du bist kein Admin!");
    }
    return 1;


    }

  • SetPlayerPos(i,223.3961,110.5082,1010.2188);
    zu
    SetPlayerPos(pID,223.3961,110.5082,1010.2188);


    stock Spielername(playerid)
    {
    new xn[MAX_PLAYER_NAME];
    GetPlayerName(playerid,xn,sizeof xn);
    return xn;
    }


    hast du auch den SSCAND Code im Script ?

    Spoiler anzeigen
    //-------------sscanf------------//

    Spoiler anzeigen
    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {

    Spoiler anzeigen
    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;

    Spoiler anzeigen
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name1, sizeof (name1));
    if (!strcmp(name1, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;


    Füge den Großen Code mal ganz unten ein, dann sollte es denke ich Funktionieren

    Stahlbau Azubi deswegen kaum Aktiv


  • sscanf hatte ich schon drin


    ich bekomme noch 1 Error:


    C:\Users\WBF Küchen\Desktop\Selfmade\gamemodes\Selfmade.pwn(1584) : warning 219: local variable "pID" shadows a variable at a preceding level
    C:\Users\WBF Küchen\Desktop\Selfmade\gamemodes\Selfmade.pwn(1586) : error 017: undefined symbol "SpielerName"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.



    //Edit 1 error behoben


    C:\Users\WBF Küchen\Desktop\Selfmade\gamemodes\Selfmade.pwn(1584) : warning 219: local variable "pID" shadows a variable at a preceding level
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.

  • machmal pID weg und schreib playerid


    Jetzt kommt dieser Error
    C:\Users\WBF Küchen\Desktop\Selfmade\gamemodes\Selfmade.pwn(1584) : warning 219: local variable "playerid" shadows a variable at a preceding level
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.

  • Bei mir gehts:


    ocmd:rangeban(playerid,params[]){ if(isPlayerInFrakt(playerid,2)) { new pID, reason[128], string[128]; if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid, 0xAFAFAFAA, "Benutze: /prison [ID] [Grund]"); format(string,sizeof(string),"[ADMCMD]: %s wurde von Admin %s ins Admin Prison geschickt Grund: %s", SpielerName(pID),SpielerName(playerid),reason); SendClientMessageToAll(0xFF4122FF,string);SetPlayerPos(playerid,223.3961,110.5082,1010.2188); SetTimer("Prison",60000,true); } else { SendClientMessage(playerid,0xAFAFAFAA,"Du bist kein Admin!"); } return 1;}

  • @H4NNYS.:
    Kann gaarnicht Klappen, da du mit pID eine BESTIMMTE ID ansprechen kannst, und wenn du Playerid verwendest, dann Deutest du auf dich also den der den Befehl eingegeben hat, der geht dann auch ins Prison, und nicht die andere Person

    Stahlbau Azubi deswegen kaum Aktiv