Beiträge von Logan

    Hey Leute,


    bestimmt kennen es sehr viele von so MTA Race Servern, in denen der Ghost Mode aktiviert ist, und man somit
    keine gegenerischen Autos mehr rammen kann jedoch noch sehen kann. Auf SAMP Race Servern wird das durch die virtuellen Welten gelöst.
    Jedoch hat jemand eine Idee wie man so ein Ghostmode scripten könnte oder das überhaupt möglich ist ?


    Danke im Voraus


    MFG

    Schau mal ins Callback ONPlayerDisconnect. Da gibts noch einen Parameter namens "Reason" den du dafür benützen kannst.
    Mit switch & case geht das ganze dann noch einfacher.


    MFG


    Eigentlich braucht man gar keinen Timer.
    Wenn du serverseitiges Geld hast einfach immer die entsprechende Geldmenge im entsprechenden Stock abfragen und aufs Textdraw setzen.


    MFG

    Die stimmen jedoch auch nicht mit der neusten Version überein. Das geht nur bis 1.6.1. Die
    neuste ist jedoch 2.0.
    Hier:

    /*---------------------------------------


    /--------\ /--------\ /\
    | | | | / \
    | | | | / \ |-----
    | | |--------/ / \ |
    | | | |--------| \----\
    | | | | | |
    \--------/ | | | -----/


    OBJECTSTREAMER & MAPEDITOR
    VERSION 5.1.1
    OCMD MODULE


    ---------------------------------------*/


    /*
    OCMD 2.0.0
    by kleinerOpa
    best command-solution for sa:mp
    supports samp 0.2X, 0.3a without OCMD_CHECK_UPDATE function
    supports samp 0.3b, 0.3c
    WEB: www.kleiner-opa.de
    ICQ: 611064955
    */


    #include <a_samp>
    #if defined OCMD_CHECK_UPDATE
    #tryinclude <a_http>
    #if !defined HTTP
    #error OCMD_CHECK_UPDATE only works with a_http.inc
    #undef OCMD_CHECK_UPDATE
    #endif
    #endif


    forward ocmdOnPlayerCommandText(playerid,cmdtext[]);
    #if defined OCMD_BEFORE_CALLBACK
    forward BeforePlayerCommandText(playerid,cmdtext[]);
    #endif
    #if defined OCMD_CHECK_UPDATE
    forward ocmdCheckUpdate();
    forward ocmdCheckUpdate2(index,response_code,data[]);
    #endif


    #if defined OCMD_BEFORE_CALLBACK
    new bool:ocmdBeforeCallback;
    #endif
    #if defined OCMD_BEFORE_CALLBACK || defined OCMD_CHECK_UPDATE
    new bool:ocmdInit;
    #endif


    #define ocmd:%1(%2) forward ocmd_%1(%2);\
    public ocmd_%1(%2)


    #define OCMD_VERSION "2.0.0"


    public OnPlayerCommandText(playerid,cmdtext[])
    {
    #if defined OCMD_BEFORE_CALLBACK || defined OCMD_CHECK_UPDATE
    if(!ocmdInit)
    {
    #if defined OCMD_BEFORE_CALLBACK
    if(funcidx("BeforePlayerCommandText")!=-1)ocmdBeforeCallback=true;
    #endif
    #if defined OCMD_CHECK_UPDATE
    SetTimer("ocmdCheckUpdate",(60*1000),false);
    SetTimer("ocmdCheckUpdate",(60*60*1000),true);
    #endif
    ocmdInit=true;
    }
    #endif
    new ocmdStr[32]="ocmd_",
    i=1,
    #if defined OCMD_COMMAND_LOG
    ocmdName[MAX_PLAYER_NAME],
    #endif
    bool:ocmdNoParams;
    #if defined OCMD_COMMAND_LOG
    GetPlayerName(playerid,ocmdName,sizeof ocmdName);
    printf("[cmd] [%s]: %s",ocmdName,cmdtext);
    #endif
    #if defined OCMD_BEFORE_CALLBACK
    if(ocmdBeforeCallback&&!CallLocalFunction("BeforePlayerCommandText","ds",playerid,cmdtext))return 1;
    #endif
    for(;i<128;i++)
    {
    if(!cmdtext[i]||cmdtext[i]==' ')
    {
    if(!cmdtext[i]||!cmdtext[i+1])ocmdNoParams=true;
    break;
    }
    ocmdStr[i+4]=tolower(cmdtext[i]);
    }
    if(!ocmdNoParams&&CallLocalFunction(ocmdStr,"ds",playerid,cmdtext[i+1]))return 1;
    if(ocmdNoParams&&CallLocalFunction(ocmdStr,"ds",playerid," "))return 1;
    return CallLocalFunction("ocmdOnPlayerCommandText","ds",playerid,cmdtext);
    }


    #if defined OCMD_CHECK_UPDATE
    public ocmdCheckUpdate()
    {
    HTTP(1,HTTP_GET,"www.kleiner-opa.de/sc/ocmd.txt","","ocmdCheckUpdate2");
    }
    public ocmdCheckUpdate2(index,response_code,data[])
    {
    if(strlen(data)&&strcmp(OCMD_VERSION,data)!=0)
    {
    new ocmdStr[128];
    format(ocmdStr,sizeof ocmdStr,"An update for OCMD is available (version %s) - www.kleiner-opa.de",data);
    print(ocmdStr);
    for(new i;i<MAX_PLAYERS;i++)if(IsPlayerAdmin(i))SendClientMessage(i,0xD3D3FFFF,ocmdStr);
    }
    }
    #endif


    #define OnPlayerCommandText ocmdOnPlayerCommandText



    Es geht jetzt immer noch nicht :O
    Hier der Code:


    new query[128],str[128];
    format(query,128,"DELETE * FROM whitelist WHERE Name = '%s'",inputtext);
    db_query(wDatabase,query);
    format(str,128,"Player %s successfully ******************",inputtext);
    SendClientMessage(playerid,RED,str);


    Ups ja das habe ich gerade selber gemerkt, jedoch steht ja der Name in DB und diesen möchte ich löschen lassen.


    MFG

    Hey Leute,
    arbeite derzeit an nem kleinem System, das über SQLite läuft.
    Habe mir auch schon das Tut von BlackAce angesehen.
    Und ich möchte per Eingabe des Namens im Dialog den Namen in der Datenbank löschen.
    Hier mal der code:
    new query[128];
    format(query,128,"DELETE * FROM whitelist WHERE Name = '%s'",GetPlayerID(inputtext));
    db_query(wDatabase,query);
    SendClientMessage(playerid,RED,"Erfolgreich.");


    Da laut Black Aces Tutorial beim Daten einfügen/removen nicht mehr nötig ist dachte ich das funk so, was es aber nicht tut.
    Es wird nichts aus der Database gelöscht.


    MFG

    Zitat


    pGrund[256],
    pAdmin[256],
    bDatum[256],
    bUhrzeit[256],


    Nur mal so ich schaue gerade in deinen Enum... w000t ? WTF?!
    Wieso verwendest du 256 Zeichen als Index? Zu mal ist Admin das Admin Level ein Integer und kein Array/string oder? Und ein Datum oder
    eine Uhrzeit ist auch nicht 255 Zeichen lang, genauso wie ein grund vllt. max. 30 Zeichen.


    Das heißt ich muss überprüfen ob die ersten 4 Ziffern der IP übereinstimmen?
    Aber ich banne dann im Ernstfall keinen "Unschuldigen" mit oder ?


    Edit: LeijaT:
    Also wenn ich den "x" Teil vergleichen würde, könnte ich auch Unschuldige "mitbannen" ?


    MFG

    Hey Leute,


    und zwar habe ich folgendendes Problem:
    Und zwar ich will in mein Script einbauen, dass automatisch Meldungen kommen wenn sich ein Benutzer mehrere Benutzeraccounts macht.
    Also wenn die IP übereinstimmt etc.
    Also ich dachte mir: Man erkennt das ja bestimmt über die IP. Jedoch habe ich mal gehört, dass sich die IP nach einem Router Restart sofort immer ändert,
    so würde das also nicht funktionieren.


    Könnt ihr mir helfen?


    Danke im Voraus .


    MFG