Beiträge von Templer

    Indem du folgendes einfügst, wenn du ins SFPD eintretest:


    SetPlayerVirtualWorld(playerid,2);


    und das einfügen, wenn du aus dem SFPD wieder gehst:


    SetPlayerVirtualWorld(playerid,0);

    Natürlich per ShowPlayerDialog ^^ Hab im Anhang das obige Tutorial umgewandelt in ein Dialog basiertes, wo man einfach neue Zeilen einfügen kann, ohne was am Code unten zu ändern. Sogar mit Weiter und Zurück Navigation ^^.

    Da hilft ihm selbst format nichts. Sandy der Compiler hat Recht und nur weil du mit format es austauschen würdest, würde dann am Ende ein Zeichen fehlen, der Grund dafür is logisch (Programmier Grundlagen)


    \0NULL character
    Ends a string.



    Bedeutet jeder String benötigt am Ende diesen Character, damit Beispielsweise die Funktion strlen die Länge vom Inhalt richtig ausgeben kann.



    Bsp:



    Civilian - ArraySize = 9 => "C i v i l i a n \0"
    Thorsten - ArraySize = 9 => "T h o r s t e n \0"
    Mama - ArraySize = 5 => "M a m a \0"
    Admin - ArraySize = 6 => "A d m i n \0"



    Die Leerschritte symbolisieren die Arrayzahl, also beim ersten steht in



    [0] das 'C'[1] das 'i'..[8] das \0



    usw ^^

    Habe es mir angeschaut und sehe, dass der Blackfox eine Zeile bei OnPlayerDisconnect fehlt ^^


    Füge in OnPlayerDisconnect folgendes hinzu:


    GetPlayerPos(playerid,Spieler[playerid][lastx],Spieler[playerid][lasty],Spieler[playerid][lastz]);



    damit die Position auch vor dem Speichern ermittelt wird.

    Also hier nun die Sachen was ich durchgeführt hab zum debuggen:


    - Alle Tags "MySQL:" entfernt, da Sie total sinnlos sind.
    - Bei einer "Mysql_Connect" Funktion den Parameter für die Verbindungsnummer weggelassen.


    Fazit:


    Anscheinend buggt er mim Verbindungsparameter... Wozu erstellt der entwickler überhaupt solche sachen ein?! ^^


    Nebenbei hab ich iwie eh schon total genug, denn beim SQL Plugin von GStylezz wiedergibt die mysql_connect Funktion immer nur den Wert 1 und stellt nicht mehrere Verbindungen her und bei Strickenkid seinem ist der oben genannte Fehler..


    Der Witz, dies alles passiert nur unter Linux-Servern. Also besorgt euch mehr Windows Server :P

    Um mehrere Verbindungen zum SQL Server herstellen zu können und ich dann mehrfache SQL Operationen ineinander durchführen kann, ohne das die abgefragten Daten durcheinander kommen.


    Edit:
    @ Trooper: Aber ich muss mehrere Verbindungen aufbauen lassen, ansonsten spinnen meine SQL Abfragen ^^ (Siehe erste Zeile von diesem Beitrag)

    hab ich doch eh oben stehen??


    EDIT:


    Nun ich bin mir irgendwie nicht sicher ob die Funktion


    #define CHECK_PARAMS(f, n, r) \
    { \
    if ( params[ 0 ] != ( (n) * sizeof( cell ) ) ) \
    { \
    logprintf( "Function: %s called with incorrect parameter count.", (f) );\
    return (r); \
    } \
    }


    auch richtig verwendet wird mit


    cell AMX_NATIVE_CALL Natives::n_mysql_connect( AMX *amx, cell *params )
    {
    CHECK_PARAMS( "mysql_connect", 6, -1 );
    //...
    }


    Den eig. kommt ja ein negativer Wert dabei heraus und blockiert mich, oder irre ich mich hier? ^^


    EDIT 2: Ok nein sry, falsch gesehen, da 'r' sowieso per return wiedergegeben wird..

    Hallo,


    Auch wenn dieses Problem klein erscheint, finde ich es doch ziemlich groß ^^.


    Folgendes:


    Wenn ich, sagen wir beim starten des Scriptes, folgendes ausführe


    new MySQL:test=mysql_init(LOG_ALL);
    mysql_connect("localhost", "sampuser", "pw", "samp_db", test);


    gibt er in den Log´s folgendes aus


    Function: mysql_connect called with incorrect parameter count.


    Obowhol meine Funktionen der native´s entsprechen und ich auch am Server die aktuellste Bibliotheksdatei bereits hochgeladen hab.


    native MySQL:mysql_init(logtype = LOG_ONLY_ERRORS, printerrors = 1);
    native mysql_connect(const host[], const user[], const pass[], const db[], MySQL:handle = (MySQL:0), auto_reconnect = 0);


    Link zum Plugin: http://forum.sa-mp.com/showthread.php?t=122983


    Hoffe jemand hat Rat ^^ Danke!

    Also ich weiß ned wo das Problem bei dir liegen soll Maddin...


    Ich hab folgenden Code getestet (schräge Variante um Sicherzugehen ^^)


    #include <a_samp>
    #define STREAM_URL_TECHNOBASE ("http://listen.technobase.fm/dsl.asx")
    main()
    {
    new string[128];
    format(string,sizeof(string),"%s",STREAM_URL_TECHNOBASE);
    printf("%s",string);
    }

    Ah scheiße, entschuldige... Kommt aus schlampigkeit ^^


    dcmd_m(playerid,params[])
    {
    if(gTeam[playerid] != TEAM_COPS) return SendClientMessage(playerid,0xC8C8C8FF,"Sie sind kein Polizist.");
    if(!IsAPoliceCar(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid,0xC8C8C8FF,"Sie sind in keinem Polizeiwagen.");
    new playername[MAX_PLAYER_NAME],string[128],Float:PlayerPos[3];
    GetPlayerName(playerid,playername,sizeof(playername));
    if(sscanf(params,"s[64]",string))return SendClientMessage(playerid,0xC8C8C8FF,"/m(egaphon) [Text]");
    format(string,sizeof(string),"[[Officer %s: %s]]", playername,string);
    GetPlayerPos(playerid,PlayerPos[0],PlayerPos[1],PlayerPos[2]);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerInRangeOfPoint(i,100.0,PlayerPos[0],PlayerPos[1],PlayerPos[2])) continue;
    SendClientMessage(i,0xF5FF00FF, string);
    }
    return 1;
    }

    Probiers mal aus:


    IsAPoliceCar(vehicleid)
    {
    for(new i = 0; i < sizeof(policecars); i++) if(vehicleid==policecars[i]) return true;
    return false;
    }


    dcmd_m(playerid,params[])
    {
    if(gTeam[playerid] != TEAM_COPS) return SendClientMessage(playerid,0xC8C8C8FF,"Sie sind kein Polizist.");
    if(!IsAPoliceCar(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid,0xC8C8C8FF,"Sie sind in keinem Polizeiwagen.");
    new playername[MAX_PLAYER_NAME],string[128],Float:PlayerPos[3];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"[[Officer %s: %s]]", playername,string);
    GetPlayerPos(playerid,PlayerPos[0],PlayerPos[1],PlayerPos[2]);
    if(sscanf(params,"s[64]",string))return SendClientMessage(playerid,0xC8C8C8FF,"/m(egaphon) [Text]");
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerInRangeOfPoint(i,100.0,PlayerPos[0],PlayerPos[1],PlayerPos[2])) continue;
    SendClientMessage(i,0xF5FF00FF, string);
    }
    return 1;
    }

    Der Kollegah El_Cid hat es fast geschafft nur ich glaube das du das mit dem
    gTeam[playerid]!= TEAM_COPS
    so wolltest ^^



    Zum eigentlichen, zeig mal die Definition von policecars


    Bei einem Array Overflow wird der Code ja abgebrochen.


    EDIT://


    Solltest du das neue sscanf nützen, so bitte nutz es bei Strings so..


    sscanf(params,"s[64]",text)


    damit sscanf weiß, wie groß der Text sein darf, da er sonst standartmäßig glaube nur 32 Zeichen verwendet.

    Nein Nein, wenn es eine Art Musik ist die Nie aufhört, dann brauchst du es, aber sollte der Sound nach der Zeit aufhören und du musst es erneut starten lassen, brauchst du es ned. Verstanden? ^^

    VehiclePos[vehicleid][0] = dini_Float(DATEINAME,"VehiclePosX");
    VehiclePos[vehicleid][1] = dini_Float(DATEINAME,"VehiclePosY");
    VehiclePos[vehicleid][2] = dini_Float(DATEINAME,"VehiclePosZ");


    und mehr ises eigentlich nicht, den Rest müsstest von DINI eh kennen.


    //EDIT Warte kurz mim Lesen bearbeite kurz den Beitrag


    //EDIT2:


    So hab dir es erweitert:#
    new rstring[128];
    for(new vehicleid=0;vehicleid!=MAX_VEHICLES;vehicleid++)
    {
    if(AbfrageObFahrzeugAbgeschlepptIst) { }
    format(rstring,sizeof(rstring),"AbgeschleppteFahrzeuge/Vehicle_%d.ini",vehicleid);
    VehiclePos[vehicleid][0] = dini_Float(rstring,"VehiclePosX");
    VehiclePos[vehicleid][1] = dini_Float(rstring,"VehiclePosY");
    VehiclePos[vehicleid][2] = dini_Float(rstring,"VehiclePosZ");
    //Sonstige Abspeicherungen der Variablen

    }