Beiträge von d0ma


    Playerid, wird mir Relativ wenig bringen, wenn das keine Spielerbezogene Variable ist.
    Diese ist und Bleibt Server Bezogen.
    Registred ist zb so Gedacht, Wenn sich ein Spieler Registriert, wird diese Variable einfach nur 1x Hochgerechnet, und somit kann ich sehen, zB wieviele Commands, Registrierungen der Server hatte etc.


    Dann mach sie auch so
    new ServerInfo[MAX_PLAYERS][sInfo];
    2 dimensionales array...

    Die äußere for(new i=0; i<sizeof(TaxiVehs); i++) schleife scheint auf den ersten Blick sinnlos zu sein, da das "i" auch nirgends verwendet wird. Dies verursacht auch den Spam ;) Mit dem break; brichst du nur die innere schleife aber nicht die äußere


    also die äußere for(new i=0; i<sizeof(TaxiVehs); i++) schleife entfernen in beiden code teilen (insgesamt 3 mal)

    Scheint so, der geht wohl global durch alle Server durch:

    EDIT:


    lösche: new name;


    und ersetze sscanf(params, "s", name) mit sscanf(params, "s[50]", string)


    und lösche format(string, sizeof(string), "%s", name);

    Laut deinen coordinaten müsste es so aussehen:
    AddPlayerClass(240,951.9411,-1130.1935,23.8728,267.5297,0,0,0,0,0,0); // Ecke1
    AddPlayerClass(162,806.9824,-1130.2506,23.8681,209.7190,0,0,0,0,0,0); // Ecke2


    -> SetPlayerWorldBounds(playerid,951.9411,806.9824,-1130.1935,-1130.2506);


    Ich denke aber das stimmt nicht, da die y Werte viel zu nahe zusammen liegen.
    Achte beim speichern darauf: die Ecke links unten(wenn man auf die Karte schaut) ist es die save-pos für das minimum und die Ecke rechts oben(wenn man auf die Karte schaut) ist es die Position mit den max werten.

    case 1:{SendClientMessage(playerid, ROT, "Job: /basis1");
    case 2:{SendClientMessage(playerid, ROT, "Job: /basis2");
    case 3:{SendClientMessage(playerid, ROT, "Job: /basis3");
    case 4:{SendClientMessage(playerid, ROT, "Job: /basis4");
    case 5:{SendClientMessage(playerid, ROT, "Job: /basis5");


    zu
    case 1:{SendClientMessage(playerid, ROT, "Job: /basis1"); }
    case 2:{SendClientMessage(playerid, ROT, "Job: /basis2"); }
    case 3:{SendClientMessage(playerid, ROT, "Job: /basis3"); }
    case 4:{SendClientMessage(playerid, ROT, "Job: /basis4"); }
    case 5:{SendClientMessage(playerid, ROT, "Job: /basis5"); }

    so sollte das ganze funktionieren, ohne verwendung zusätzlicher timervariablen da sich kein timer von selbst wiederholt
    public OnPlayerSpawn(playerid)
    {
    SetTimerEx("KHCountdown", 1000, 0, "ii", playerid, 120); // startwert 120
    }


    forward KHCountdown(playerid, KHS);
    public KHCountdown(playerid, KHS)
    {
    if(KHS > 0)
    {
    // Weiter runterzählen
    SetTimerEx("KHCountdown", 1000, 0, "ii", playerid, (KHS-1));
    }
    else
    {
    if(KHS == 0)
    {
    // Timer fertig/ bei 0, hier den code einfügen was bei 0 passieren soll
    }
    }
    }

    Hier genauer:
    Server hier downloaden: http://sa-mp.com/download.php (Windows / Linux)
    Es haben sich keine Parameter bei bereits vorhandenen Funktionen geändert, also musst du nur die samp-server.exe, announce.exe und samp-npc.exe austauschen(bei linux sind die namen etwas anders) und den Server starten.


    Falls du zusätzlich auch noch Funktionen von 0.3x nutzen willst, musst du zusätzlich noch den Windows Server hier downloaden: http://sa-mp.com/download.php
    Nach dem Download:
    -Entpacken
    -in den entpackten Dateien den /pawno/includes ordner öffnen
    -alle Dateien in diesem ordner in dein bisheriges Serververzeichnis unter /pawno/includes kopieren

    new tmp[12];
    while(mysql_fetch_row(tmp, "|", SQL))
    {
    new id = strval(tmp)-1;
    format(string,256,"%s%s\n",string,FirmenInfo[id][FirmenName]);
    ShowPlayerDialog(playerid,diaJobVertrag,DIALOG_STYLE_MSGBOX,"Firmen",string,"Ok","");
    }


    könnte so hinhauen, sofern die Funktionen auch das machen was ich vermute

    @[DT]Beavis
    bcmd:firma(playerid,params[])
    {
    if(GetPVarInt(playerid,"loggedin")!=1)return SendClientMessage(playerid,cRed,"Du bist nicht eingeloggt!");
    if(PlayerInfo[playerid][Gemutet]!=0) return SendClientMessage(playerid,cWarn,"Du bist gemutet!");
    new string[256],query[128];
    format(query,128,"SELECT `Firmenid` FROM `FirmenUser` WHERE `Name` = '%s'",PlayerInfo[playerid][Name]);
    mysql_query(query, (-1), (0), SQL);
    mysql_store_result(SQL);
    while(mysql_retrieve_row(SQL))//lauf durch alle zeilen durch
    {
    new tmp[12];
    mysql_fetch_field_row(tmp, "Firmenid", SQL);
    new id = strval(tmp)-1;
    format(string,256,"%s%s\n",string,FirmenInfo[id][FirmenName]);
    ShowPlayerDialog(playerid,diaJobVertrag,DIALOG_STYLE_MSGBOX,"Firmen",string,"Ok","");
    }
    mysql_free_result(SQL);
    return 1;
    }
    so, sofern das mit deiner mysql version auch kompatibel ist


    Edit: SQL variable hinzugefügt in den funktionen

    Daran liegt es nicht er lädt es richtig aber die Namen kommen nicht
    Es wird auch in der Datenbank mit den +1 dazu gerechnet
    Aber ich müsste da einfach das id +1 zugeben damit es richtig klappt...
    Danke für den hinweis^^


    Naja im array ist die firma an der stelle "i" drin und du speicherst "i+1" in der mysql datenbank und anschließend holst du den wert aus der datenbank und setzt ihn im array wieder ein, also eins zu hoch. Kann dein "Daran liegt es nicht" nicht wirklich verstehen.

    @[DT]Beavis


    du speicherst
    FirmenInfo[i][FirmenID]=i+1; bei CreateFirma
    = Die firma ist im array-Wert i aber du speicherst i+1
    heißt du musst bei /firma dein
    new id = mysql_fetch_int(SQL);
    durch
    new id = (mysql_fetch_int(SQL)-1);
    ersetzen
    quasi die 1 wieder abziehen


    oder eben bei CreateFirma das +1 entfernen

    Wenn der webserver auf dem selben Server liegt wie der MySQL Server, dann benutze "localhost" bzw. "127.0.0.1" als host


    Wenn der webserver extern auf einen anderen Server liegt, dann stell sicher das der MySQL Server Verbindungen von außerhalb bzw. dieser IP akzeptiert

    Ab einer Stelle kommt nichts mehr ? print ist die Lösung um rauszufinden wo genau das Script anhält.


    mal innerhalb der if abfrage ein print um zu testen ob das Script überhaupt bis in die if-Abfrage hinein funktioniert:

    if(minute==3&&sec==0)
    {
    print("Jetzt sind es 3MIN und 0SEK, if abfrage funktioniert");
    //rest vom code
    }

    Wenn das nciht klappt dann wird deine Funktion wohl nie mit 3 min und 0 Sekunden ausgeführt, Verzögerung vom Timer das manche Sekunden vll. ausgelassen werden ?