Beiträge von robbi2304

    Der sscanf sieht in Ordnung aus meiner Sicht nach. Schau mal ob er dir den Print beim Ausführen des Befehls in der server.log anzeigt.




    ocmd:aherstellen(playerid, params[])
    {
    new erstellteAutohauser, aBesitz[MAX_PLAYER_NAME], aInteil[MAX_PLAYER_NAME], aName[40], gGekauftJaNein;
    if(sscanf(params, "sssd",aBesitz, aInteil, aName,gGekauftJaNein)) return SendClientMessage(playerid, Weiss, "/aherstellen [Besitzer][Inteilhaber][AutohausName[Siehe Vorgaben]][0 = Zukaufen 1= Verkauft]");
    for(new i = 0; i<Max_Autohauser; i++)
    {
    print("Schleife geladen");
    new Float:aa_x, Float:aa_y, Float:aa_z;
    GetPlayerPos(playerid, aa_x, aa_y, aa_z);
    AutohausInfo[i][ah_ID] = i;
    AutohausInfo[i][aa_Name] = aName;
    AutohausInfo[i][aa_Besitzer] = aBesitz;
    AutohausInfo[i][aa_Inteilhaber] = aInteil;
    AutohausInfo[i][Pos_x] = aa_x;
    AutohausInfo[i][Pos_y] = aa_y;
    AutohausInfo[i][Pos_z] = aa_z;
    AutohausInfo[i][GekauftJaNein] = gGekauftJaNein;




    new path[64];
    format(path, sizeof(path), "/Autohauser/%d.ini", i);
    if(!fexist(path)) continue;
    dini_Create(path);
    dini_IntSet(path, "aa_ID", i);
    dini_Set(path, "aaName", aName);
    dini_Set(path, "Besitzer", aBesitz);
    dini_Set(path, "Inteilhaber", aInteil);
    dini_IntSet(path, "Kasse", 0);
    dini_FloatSet(path, "aa_x", aa_x);
    dini_FloatSet(path, "aa_y", aa_y);
    dini_FloatSet(path, "aa_z", aa_z);
    dini_IntSet(path, "GekauftJaNein", gGekauftJaNein);
    SpeichereAutohauser();
    new string[200];
    format(string, sizeof(string), "%s\nBesitzer: %s\nInteilhaber: %s\nKasse: %d$", AutohausInfo[i][aa_Name], AutohausInfo[i][aa_Besitzer], AutohausInfo[i][aa_Inteilhaber],AutohausInfo[i][aa_Kasse]);
    print(string);
    Label[i] = Create3DTextLabel(string, Weiss, AutohausInfo[i][Pos_x], AutohausInfo[i][Pos_y], AutohausInfo[i][Pos_z]+0.5,5,0,0);
    erstellteAutohauser++;
    }
    return 1;
    }

    Ich habe derzeit folgendes Problem. Die Befehle wie z.b


    /materials deliver
    /materials get Anzahl
    /materials gtake
    /materials put


    funktionieren nicht wirklich.


    Sie werden immer durch irgendwelche sscanf abfragen gestoppt. Hat jemand eine Idee wie man das am besten machen kann ? Hier ein vereinfachter Code teil




    ocmd:materials(playerid,params[])
    {
    if(PlayerInfo[playerid][pLoggedIn]==false) return 1;
    new ding[20], anzahl, string[128];
    if(sscanf(params, "s", ding) || (params, "s", ding,anzahl)) return SendClientMessage(playerid,COLOR_RED,"Fehler");
    {
    if(strcmp(ding, "get", true) == 0)
    {
    if(sscanf(params, "si", ding, anzahl)) return SendClientMessage(playerid,COLOR_RED,"Benutze /materials [get]");
    {
    if(PlayerInfo[playerid][pJob] != 2) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Waffendealer");
    {

    }
    }
    if(strcmp(ding, "deliver", true) == 0)
    {
    if(PlayerInfo[playerid][pJob] != 2) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Waffendealer");
    {

    }
    }
    if(sscanf(params, "sd", ding, anzahl)) return SendClientMessage(playerid,COLOR_RED,"Benutze /materials [get/delivery/put/gtake/sell]");
    {
    if(strcmp(ding, "put", true) == 0)
    {

    }
    }
    if(sscanf(params, "sd",ding,anzahl)) return SendClientMessage(playerid,COLOR_RED,"Benutze /materials [get/delivery/put/gtake/sell]");
    {
    if(strcmp(ding,"gtake",true) ==0)
    {

    }
    }
    }
    }
    return 1;
    }

    ich erinnere mich gerade an meine 1&1 Zeit, da hatte ich das auch mit ner 100 mbits dort gab es auch immer abbrüche, grund die leitung konnte den 100 mbits nicht stand halten. Es wurde mit der zteit dann auf 25 mbits zum test gedrosselt siehe an es ging.


    Lass dich von der Technik drosseln und schau obs besser wird wenn ja anbieter wechsel oder geringeren vertrag

    Vodafone ist auch der letzte Dreck (that means kabeldeutschland too)...Habe derzeit auch nur Probleme mit Telekom. Mal gehts, mal nicht...
    Davor war ich aber bei Vodafone und da war der Support noch Schlechter als bei der Telekom.
    Die Telekom antwortet mir sogar bei Twitter und hilft direkt ohne Flax.


    Von beidem Rate ich dir aber ab...


    Ich weiß ja nicht was für einen Vertrag du bei Vodafone hattest. Kabel oder DSL / VDSL.


    Bei Kabel sehe ich das etwas anders.


    Bei DSL & VDSL dauert es immer weil es nicht eigene leitungen sind.


    Aber ich will hier jetzt keine diskussion starten

    Ich kann wie dreamtex auch nur Kabeldeutschland empfehlen. Diese haben eigene Leitungen und sind dafür auch selbst verantwortlich. Da bisher noch nicht jeder zu Kabel gewechselt hat, sind die Kunden natürlich klein in gegensatz zu DSL Kunden. Dadurch ist Kabeldeutschland aka Vodafone bei einer Störungsbehebung auch schneller bei das Problem zu beheben.


    Mit bis zu 400 Mbits kommt das Internet in dein Haus. Ich habe derzeit den Tarif Businnes 400 Mibts und bin voll zufrieden.


    Ich habe auf diesem Vertrag einen Server laufen bei dem bisher noch nie eine Unterbrechung der Internetverbindung statt fand.


    Mein Vertrag besteht seit 1 Jahr. Zuvor habe ich es in einer alten Wohnung vor 3 Jahren gehabt. Dort lief auch alles sauber mit 100 mbits.

    Guten Tag liebe Brotfische,


    wie manche vielleicht schon bemerkt haben, bin ich dabei ein Reallife Script selbst zu schreiben. Hierzu brauche ich nun auch mal ein paar Tester die mir dabei helfen, Fehler aufzuspüren. Hierzu würde ich 1-2 freiwillige benötigen die mit mir das ganze einmal durchgehen.


    Solltest du dich als Tester anbieten, so schreibe mir eine Private Nachricht oder schreibe unter den Thread und ich lasse dir alle notwendigen Daten zukommen.


    Liebe Grüße

    Setze


    dbhandle = mysql_connect(db_host,db_user,db_datenbank,db_passwort);


    jedenfalls zuerst nach ganz oben. Es wird z.b vorher ein Timer aufgerufen. Der auf andere Dinge weiterleitet was den crash verursachen kann


    if(Busfahrer[playerid][IsBusfahring] == 1)
    {
    if(IsPlayerInAnyVehicle(playerid) && Busfahrer[playerid][BusID] == GetPlayerVehicleID(playerid))
    {
    if(Busfahrer[playerid][BusRoute] == 1)
    {
    if(Busfahrer[playerid][BusStand] == sizeof(BusfahrRouteA)-1)
    {
    SendClientMessage(playerid,COLOR_GREEN,"Bustour beendet.");
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid,COLOR_BUSBLUE,"Du erhälst an deinem PayDay +2900$");
    PlayerInfo[playerid][pJobMoney]+=2900;
    Busfahrer[playerid][BusID] = 0;
    Busfahrer[playerid][IsBusfahring] = 0;
    Busfahrer[playerid][BusStand] = 0;
    Busfahrer[playerid][BusRoute] = 0;
    Busfahrer[playerid][BusZeit] = 0;
    SaveUserStats(playerid);

    new string[128];
    format(string,sizeof(string),"%s hat die Linie 100 erfolgreich beendet",getPlayerName(playerid));
    SaveToLog("Buserfolgreichlog", string);
    }
    else
    {
    Busfahrer[playerid][BusZeit] = 10;
    }
    }
    }
    }


    auch in den timer ? Das war vorher ja in OnPlayerCheckpoint

    Hey,
    schick uns mal den gesamten Code, hier ist ja nichts mit einem Timer wo wir schauen können was flasch ist.
    Also bitte die entsprechenden Stellen rein stellen.


    MfG

    Hey, das ist der Code der alle 60 Sekunden ausgeführt wird


    SetTimer("SekundenTimer", 1000, 1);



    [list=1][*]forward SekundenTimer(playerid);
    [*]public SekundenTimer(playerid)
    [*]{
    [*]for(new i = 0; i <= GetPlayerPoolSize(); i++)
    [*] {
    [*] if(Busfahrer[i][BusZeit] != 0)
    [*] {
    [*] if(IsPlayerInRangeOfPoint(i,5.0,BusfahrRouteA[Busfahrer[i][BusStand]][br_x],BusfahrRouteA[Busfahrer[i][BusStand]][br_y],BusfahrRouteA[Busfahrer[i][BusStand]][br_z]))
    [*] {
    [*] format(string,sizeof(string),"Nachste Haltestelle in %d Sek.",Busfahrer[i][BusZeit]);
    [*] Busfahrer[i][BusZeit] --;
    [*] GameTextForPlayer(i, string, 1000, 3);
    [*] if(Busfahrer[i][BusZeit] == 0)
    [*] {
    [*] DisablePlayerCheckpoint(i);
    [*] Busfahrer[i][BusStand] ++;
    [*] if(Busfahrer[i][BusRoute] == 1)
    [*] {
    [*] SetPlayerCheckpoint(i,BusfahrRouteA[Busfahrer[i][BusStand]][br_x],BusfahrRouteA[Busfahrer[i][BusStand]][br_y],BusfahrRouteA[Busfahrer[i][BusStand]][br_z],2.5);
    [*] }
    [*] }
    [*] }
    [*]}
    [/list]


    Wenn der Spieler den Checkpoint erreicht



    if(Busfahrer[playerid][IsBusfahring] == 1)
    {
    if(IsPlayerInAnyVehicle(playerid) && Busfahrer[playerid][BusID] == GetPlayerVehicleID(playerid))
    {
    if(Busfahrer[playerid][BusRoute] == 1)
    {
    if(Busfahrer[playerid][BusStand] == sizeof(BusfahrRouteA)-1)
    {
    SendClientMessage(playerid,COLOR_GREEN,"Bustour beendet.");
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid,COLOR_BUSBLUE,"Du erhälst an deinem PayDay +2900$");
    PlayerInfo[playerid][pJobMoney]+=2900;
    Busfahrer[playerid][BusID] = 0;
    Busfahrer[playerid][IsBusfahring] = 0;
    Busfahrer[playerid][BusStand] = 0;
    Busfahrer[playerid][BusRoute] = 0;
    Busfahrer[playerid][BusZeit] = 0;
    SaveUserStats(playerid);
    new string[128];
    format(string,sizeof(string),"%s hat die Linie 100 erfolgreich beendet",getPlayerName(playerid));
    SaveToLog("Buserfolgreichlog", string);



    }
    else { Busfahrer[playerid][BusZeit] = 10; }
    }
    }

    Ok
    Beschreibe das Problem mal ganz genau nochmal

    Sobald ich als Spieler mit der playerid als 1 z.b in den Checkpoint reinfahre ist alles in Ordnung. Sobald aber ein Spieler mit der playerid 0 in den Checkpoint fährt wird meine Checkpoint Zeit ausgeblendet und der Timer auch gestoppt. Sobald der Spieler mit der playerid 0 den Checkpoint verlassen hat, läuft mein Timer dann wieder von vorne neu.

    was das GetPlayerPoolSize?

    Dieser ermöglicht die ermittlung der höchsten ID eines Spieler auf dem Server



    Code
    GameTextForPlayer(playerid, string, 1000, 3);

    zu


    Code
    GameTextForPlayer(i, string, 1000, 3);

    @Mogly1:
    http://wiki.sa-mp.com/wiki/GetPlayerPoolSize

    hatte ich schon gesehen allerdings besteht der Fehler immernoch. Du hast mir sogar das Bus Script erstellt gehabt wenn du dich noch erinnern tust

    Sobald ein Spieler mit der ID 1 in die Haltestelle fährt, wird der Countdown gestartet. Sobald ein 2 User mit der ID 0 in den Checkpoint fährt, wird vom Spieler der Timer scheinbar gestoppt und die Anzeigen entfernt. Wo könnte das Problem liegen ?





    for(new i = 0; i <= GetPlayerPoolSize(); i++)
    {
    if(Busfahrer[i][BusZeit] != 0)
    {
    if(IsPlayerInRangeOfPoint(i,5.0,BusfahrRouteA[Busfahrer[i][BusStand]][br_x],BusfahrRouteA[Busfahrer[i][BusStand]][br_y],BusfahrRouteA[Busfahrer[i][BusStand]][br_z]))
    {
    format(string,sizeof(string),"Nachste Haltestelle in %d Sek.",Busfahrer[i][BusZeit]);
    Busfahrer[i][BusZeit] --;
    GameTextForPlayer(playerid, string, 1000, 3);
    if(Busfahrer[i][BusZeit] == 0)
    {
    DisablePlayerCheckpoint(i);
    Busfahrer[i][BusStand] ++;
    if(Busfahrer[i][BusRoute] == 1)
    {
    SetPlayerCheckpoint(i,BusfahrRouteA[Busfahrer[i][BusStand]][br_x],BusfahrRouteA[Busfahrer[i][BusStand]][br_y],BusfahrRouteA[Busfahrer[i][BusStand]][br_z],2.5);
    }
    }
    }
    }
    }


    @Jeffry


    //edit falscher code


    //push
    //edit Code zur besseren Übersicht bearbeitet

    Es ist möglich das Fahrzeug mit einer Sirene auszustattet wenn das Fahrzeug schon auf dem Server ist und von der Datenbank aus gesteuert wird.


    Sollte man es allerdings unter OnGameModeInit erstellt haben denke ich wird es auch schwierig.


    Bei MySQL müsste man einen Wert hinzufügen wie z.b Updatet. Diesen dann abfragen ob nothing or 1.
    Wenn 1 soll er das Fahrzeug mit der Fahrzeug id löschen und dann wieder neu erstellen.