Beiträge von IPrototypeI

    Slotbezogen nicht
    Ich lass die nachicht direkt in einer Tabelle setzen wo alle Nachichten für jeden sind


    Hier bitte ein kleiner Anfang ^^:

    new ids[MAX_PLAYERS], counter;
    #define DIALOG_LISTE 1


    ocmd:liste(playerid)
    {
    new string[500],pName[MAX_PLAYER_NAME],string2[MAX_PLAYER_NAME+4];
    counter = 0;
    for(new x; x < MAX_PLAYERS; x++){
    if(IsPlayerConnected(x)){
    GetPlayerName(x,pName,MAX_PLAYER_NAME);
    format(string,sizeof(string),"%s %s\n",string,pName);
    ids[counter] = x;
    counter++;
    }
    }
    printf(string);
    ShowPlayerDialog(playerid,DIALOG_LISTE,DIALOG_STYLE_LIST,"Namen",string,"Auswählen","Schließen");
    return 1;
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 1){
    for(new i; i< counter; i++){
    if(listitem == i && response == 1){
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(ids[i],pName,MAX_PLAYER_NAME);
    printf("nummer : %d / Name: %s und die id %d",i,pName,ids[i]);
    }


    }
    }
    return 1;
    }


    Ich konnte nicht wiederstehen :D deine Grundidee für ein System ist wirklich nicht schlecht.


    @ RFT Wenn du noch verbesserungen an dem codeschnipsel hast bitte drunterposten oder ein besser Methode , was anderes ist mir auf die kürze nicht eingefallen.

    Diese nette Funktion , welche du meinst nennt sich GetTickCount


    http://wiki.sa-mp.com/wiki/GetTickCount


    für weitere informationen ich hab dazu mal was bei den Codeschnipsel gepostet eine Bestenliste einmal quicksort und einmal Mysql kannst dir ja gerne mal noch dazu anschauen , da ich mal davon ausgehe
    das du bestimmt auch den besten spieler anzeigen lassen möchtest der die schnellste runde absolviert hat.


    ich bitte dich was ist hier geringfügiger


    beispiel 1:

    1069.9680, -1388.4618, 1189.7433, -1286.8961


    1069.9680 < 1189.7433
    -1388.4618 < -1286.8961
    und zum letzten seit wann ist -4 größer als -1 tja zwar in den negativen bereich aber nicht gesammt

    first read then think after that write down your post


    //edit


    du kannst nicht immer aus lust und laune ihrgend welche scheiße returnen das macht doch gar kein sinn das bricht hier die schleife ab


    for(new i;i<zonenodm;i++){
    if(IsPlayerInArea(playerid, NODMZone[i][minX],NODMZone[i][minY],NODMZone[i][maxX],NODMZone[i][maxY])){
    NODM(playerid);
    }
    }
    return 1;


    daher ist das return 1: auch ausserhalb es gibt an ob der code erfolgreich war oder nicht 0 ist in dem fall dann false also der code ist gescheitert
    schonmal bei einem command das return 1; vergessen dann kommt unknow command da der code nicht erfolgreich.

    for(new i;i<ZONENODM;i++)
    {
    if(IsPlayerInArea(playerid, NODMZone[i][minX],NODMZone[i][minY],NODMZone[i][maxX],NODMZone[i][maxY]))
    {
    NODM(playerid);
    return 1;
    }


    fällt dir was auf ? ich verweiße auf das return

    Hier bitte die neuste Version die es von ocmd gibt 2.0.0



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


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


    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

    Zwischen den Versionen ist immer viel Zeitraum und das ist auch gut so, so hat man mehr als genug Zeit die neuen Features und Funktionen einzuabauen ehe dann neue kommen.


    Naja wenn ein Update kommt dann ist das eher mittel mäßig es gibt genug Ideen welche jedoch von Kalcor nicht umgesetzt werden da ist mit MTA in der hinsicht viel lieber die gehen auf ihre community ein.
    Es hat sich zum beispiel einer beklagt wegen dem Suchmenu welches danach um 5 px verschoben wurde, bei samp wär drauf geschießen


    @ Sommerferien es gibt nur einen Entwickler Kalcor = Key .


    nur die Betatester helfen im ab und zu ein bissle so viel wie ich gehört habe.

    So wie ich dich hier verstehe meinst du skin mods.


    Das geht leider nicht ohne ein launcher und dazu ein plugin nur müsstest du das selbst schreiben da es sowas nicht public gibt nur eine alpha oder war es beta version vom
    grp anticheat client so viel ich weiß.

    Jo laut der log sollte der Sql Command ausgeführt werden nur tut der das nicht wenn man eine float angibt scheint auch wieder bei den anderen zu sein oder irre ich mich da


    eine neue erkenntnis

    [19:06:53] >> mysql_query( Connection handle: 1 )


    [19:06:53] CMySQLHandler::Query(DELETE FROM `autos4` WHERE `id`='4' AND `x` = '1961.099975') - Successfully executed.



    ocmd:info2(playerid,params[])
    {
    new bool: no, Query[300];
    for(new i; i < SCRIPT_CARS; i++){
    if(IsPlayerInRangeOfPoint(playerid,4.0,VehicleInfo[i][Pos][X],VehicleInfo[i][Pos][Y],VehicleInfo[i][Pos][Z])){
    format(Query, sizeof(Query), "DELETE FROM `autos4` WHERE `id`='%d' AND `x` = '%f'",VehicleInfo[i][Id],VehicleInfo[i][Pos][X]);
    print(Query);
    mysql_query(Query);
    no = false;
    break;
    }else no = true;
    }
    if(no) return SendClientMessage(playerid,-1,"Du bist an keinem Auto!");
    return 1;
    }


    ein blick auf die Datenbank es sind wie davor immer noch 7 einträge vorhanden.


    Naja ich werde mal im Englischen Forum nach fragen oder du die alternative wählen mit dem zusätzlichen eintragen einer id zum indifikation.

    Guten Tag Breadfishler,


    Ich hab ein kleines Anliegen und zwar wenn ich etwas was meiner Datenbank raus lösche per


    format(str,200,"DELETE FROM `pflanzen` WHERE `Name` = '%s' AND `X` = '%f'",DrogenInfo[i][Name],DrogenInfo[i][Erde]);
    print(str);
    mysql_function_query(g_ConnectionHandle, str, false, "", "");


    wird mir die log in sekunden mit 1000den Einträgen vollgespammt mit


    [18:17:20] >> mysql_query_callback( Connection handle: 1 )
    [18:17:20] Passing query DELETE FROM `pflanzen` WHERE `Name`='' AND `X`='0.000000' |
    [18:17:20] ProcessQueryThread() - Query was successful. (DELETE FROM `pflanzen` WHERE `Name`='' AND `X`='0.000000')
    [18:17:20] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()


    der witz ist ja frage ich bei meiner AND clausel nach einem integer geht das ohne probleme und auch mit TRUNCATE TABLE kann ich die tabelle säubern.
    nur bei den Floats macht das ganze ärger vllt kennt ja einer das problem und weiß. Dennoch hab ich noch eine alternative die ich nicht wirklich gerne nützen möchte.

    Hier bitte

    stock RaketeLenken(playerid)
    {
    new Keys,ud,lr;
    GetPlayerKeys(playerid,Keys,ud,lr);
    if(ud > 0) { Raketex -= 1.0; SendClientMessage(playerid, 0xFFFFFFFF, "Hinten");}
    else if(ud < 0) { Raketex += 1.0; SendClientMessage(playerid, 0xFFFFFFFF, "Vorne");}
    if(lr > 0) { Raketey += 1.0; SendClientMessage(playerid, 0xFFFFFFFF, "rechts");}
    else if(lr < 0) { Raketey -= 1.0; SendClientMessage(playerid, 0xFFFFFFFF, "links");}
    if(Keys == 4){Raketez += 1.0; SendClientMessage(playerid, 0xFFFFFFFF, "Runter");}
    else if(Keys == 32){ Raketez -= 1.0; SendClientMessage(playerid, 0xFFFFFFFF, "Hoch");}
    MoveObject(rocket, Raketex, Raketey, Raketez, 5.00, 0.0000, 90.0000, 0.0000);
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    RaketeLenken(playerid);
    return 1;
    }



    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
    rocket = CreateObject(1245, 10.0, 10.0, 20.0, 0.0, 0.0, 0.0);
    AttachCameraToObject(playerid, rocket);
    GetObjectPos(rocket, Raketex, Raketey, Raketez);
    return 1;
    }

    new Float:Raketex, Float:Raketey, Float:Raketez;
    new rocket;

    Also wenn ich das so richtig verstanden habe was in dem Link drinne stand von Goldkiller müsste es so sein

    INSERT INTO tbl_temp2 (fld_id)
    SELECT tbl_temp1.fld_order_id
    FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;


    http://dev.mysql.com/doc/refman/5.0/en/insert-select.html


    um das zu erklären hier werden daten in die tabelle tbl_temp2 bei fld_id eingefügt welche von tbl_temp1 genommen wird also die id wo sich dann unter fld_order_id befindet
    wo halt dann die id größer als 100 ist


    INSERT INTO Tabelle2 (id)
    SELECT Tabelle1.id
    FROM Tabelle1 WHERE Tabelle1.id > 100;

    naja gut das tutorial soll anscheinend nicht das beste sein da schon viele vor dir auch probleme damit haben.


    Du kannst ja vllt auch mal dein problem damit posten oder schau ins Englische Forum dort sind weit aus mehr tuts zu dem thema zu finden auch mysql


    beispiel:


    http://forum.sa-mp.com/showthread.php?t=287541
    http://forum.sa-mp.com/showthread.php?t=179206
    http://forum.sa-mp.com/showthread.php?t=118379


    etc ...


    Oder du schaust dir mal andere Haussysteme genau an und versuchst dir dann dein eigenes zu schrieben

    In dem du den code hintereinander einfügst erst deinen ersten punkt dann den zweiten bei der jeweilgen Funktion wann du das abrufen willst.


    Jedoch solltest du beim punkt wechsel beachten das du den spieler dort in der nähe hinportest wegen dem stream sonst wird alles unscharf .

    im gesammten find ich es nicht schlecht nur würde ich das ganze mainmenu nochmals überarbeiten da die schrift zu einem viel zu groß ist und auch nicht wirklich eingearbeitet.
    so viel dazu zu der Idee naja man erkennt natürlich elemente von anderen Designs , jedoch mal ehrlich so funktioniert das internet , ideen werden übernommen , überarbeitet und wieder veröffentlich
    so gesehen gibt es nichts wirkliches neues. Daher sollte man nicht nach sowas gehen

    Tja leider geht sowas nicht ^^wie du es gern hättest um einfach das wasser abzudrehen. dazu müsstest du erstmal den particel effekte selbsterstellen für das Feuerwehrauto, ich geh mal davon aus das es diesen effekt wahrscheinlich gibt bin mir jedoch nicht sicher und dazu müsstest du eine andere schuss taste verwenden oder man benutzt einen anderen effekt und removet das objekt dazu ganz einfach.


    Aber leider kann ich dir diese id nicht sagen im wiki ist nix auf geführt und in einem video wo es diese ganzen effekte auch gibt war soweit ich mich entsinnen kann auch nix.