Beiträge von Jeffry

    Das klingt ja abenteuerlich. 8|
    Kannst du mal den Code zeigen, und was in der Datei steht?


    Du kannst es auch so machen:
    dini_Set("File.txt", "version", "1");
    dini_Set("File.txt", "unterversion", "1");


    new version[16];
    format(version, sizeof(version), "%s.%s", dini_Get("File.txt", "version"), dini_Get("File.txt", "unterversion"));


    Bzw. eben mit der INT Variante, je nach dem, vielleicht willst du es ja auch mal "1.1a" nennen.

    Kannst du mir verraten warum es als string nicht geht? Das dürfte so gehen:


    dini_Set("File.txt", "version", "1.1");


    new version[16];
    format(version, sizeof(version), "%s", dini_Get("File.txt", "version"));



    Phony_: Vielleicht will er die Version ändern ohne den Server neu zu starten. Er wird schon seine Gründe haben.

    Ohne zu wissen was 'a' ist:


    Taxis[a] = GetPlayerVehicleID(playerid);
    Taxiveh3Dtext[a] = Create3DTextLabel(string,Gelb,x,y,z,25.0,GetPlayerVirtualWorld(playerid),1);
    Attach3DTextLabelToVehicle(Taxiveh3Dtext[a],Taxis[a],0.0,0.0,0.0);
    SetPVarInt(playerid,"Taxiid", a);


    Die Schleife kannst du dann auch weg machen, a wird ja gespeichert.
    if(Spieler[playerid][ImJob] == 0)return SendClientMessage(playerid,Orange,"Du bist nicht am Arbeiten!");
    new a = GetPVarInt(playerid,"Taxiid");
    Delete3DTextLabel(Taxiveh3Dtext[a]);

    SetVehiclePos(playerid,1532.1685,-1669.8973,13.3828);
    SetVehicleZAngle(playerid,195.2192);
    LinkVehicleToInterior(playerid,0);
    zu:
    SetVehiclePos(vehid,1532.1685,-1669.8973,13.3828);
    SetVehicleZAngle(vehid,195.2192);
    LinkVehicleToInterior(vehid,0);

    Nein, das kannst du so nicht machen.


    Auch das da ist nicht richtig:
    new rand[MAX_PLAYERS] = 100; //hierbei stürzt er nicht ab
    das muss so sein:
    new rand[MAX_PLAYERS] = {100, ...}; //Jedem Array Teil den Wert 100 geben



    Um einen zufälligen Wert zu bekommen, der vom Start des Servers immer gleich bleibt:
    OnGameModInit/OnFilterScriptInit:
    new tmp = random(100);
    for(new i=0; i<MAX_PLAYERS; i++) rand[i] = tmp;


    Oder, wenn alle einen anderen Wert haben sollen:
    for(new i=0; i<MAX_PLAYERS; i++) rand[i] = random(100);



    Wenn du dem Spieler immer beim eintreten des Servers eine neue zufällige Zahl geben willst, trifft das zu, was Elite. geschrieben hat.

    ocmd:admins(playerid,params[])
    {
    new string[128],bool:online;
    new adminrank[64];
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerNPC(i))
    if(GetPVarInt(i,"Adminlevel") >= 1)
    {
    switch(GetPVarInt(i,"Aduty"))
    {
    case 1:{adminrank="Supporter";}
    case 2:{adminrank="Admin";}
    case 3:{adminrank="Headadmin";}
    case 4:{adminrank="Leitung";}
    case 5:{adminrank="Manager";}
    case 6:{adminrank="Designer";}
    case 7:{adminrank="Sponsor";}
    }
    if(online == false)
    {
    SendClientMessage(playerid,0x00B71EFF,"Admins/Supporter Online:");
    SendClientMessage(playerid,WEIS,"{007F9A}Aufbau: {C8C8C8}Rank | Name | Adminlevel");
    SendClientMessage(playerid,WEIS,"");
    format(string,sizeof(string),"%s: %s [Level: %i]",adminrank,SpielerName(i),GetPVarInt(i,"Adminlevel"));
    SendClientMessage(playerid,GRAU,string);
    online = true;
    }
    else
    {
    format(string,sizeof(string),"%s: %s [Level: %i]",adminrank,SpielerName(i),GetPVarInt(i,"Adminlevel"));
    SendClientMessage(playerid,WEIS,string);
    }
    }
    }
    if(online == false)
    {
    SendClientMessage(playerid,ROT,"Derzeit ist kein Admin/Supporter Online");
    }
    return 1;
    }

    Du hast alles mit if/else gemacht, da kannst und musst du dir die return's im Normalfall sparen:


    public OnGameModeInit()
    {
    new oldtime = GetTickCount();
    mysql_debug(1);
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS); //Wir versuchen mit den Angaben die wir oben im Script gemacht haben uns mit dem MySQL Server zu verbinden.
    if(mysql_ping() == 1) //Es wird überprüft ob die Verbindung steht.
    {
    //Falls ja wird das in die Console geschrieben und die Funktion wird beendet.
    print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
    }
    else
    {
    //Falls nicht wird erneut versucht eine Verbindung aufzubauen.
    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
    if(mysql_ping() == 1)
    {
    print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
    }
    else
    {
    //Falls das auch nicht Funktioniert wird der Server zur Sicherheit wieder heruntergefahren.
    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Der Server wird nun beendet!");
    SendRconCommand("exit");
    }
    }
    SetTimer("ChangeHostname",200,1); ///// HIER IST DER WARNING
    SetTimer("ChangeMode",200,1);
    SetTimer("ChangeMap",200,1);
    printf("| - Server brauchte für das Hochfahren %i ms -",GetTickCount() - oldtime);
    return 1;
    }


    Sorry aber so ganz verstehe ich das nicht.Wo muss ich das den eintragen? Kenne mich nicht so mit scripten aus^^


    OnGameModeInit



    könntest du mir das vielleicht erweitern`?
    Ich raffs i.wie net :D


    forward CheckDesktop();
    public CheckDesktop()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(SpielerUpdate[i] + 2 < gettime())
    {
    new AufDesktopSeit = gettime() - SpielerUpdate[i], str[128];
    format(str, sizeof(str), "Seit %d Sekunden AFK.", AufDesktopSeit);
    Update3DTextLabelText(...);
    }
    else //leeren String ins Label setzen, er ist wieder da.
    }
    return 1;
    }
    Das 3D Label sollte zuvor erstellt worden sein, logischerweise.
    Also mehr kann ich dir beim besten Willen nicht machen, wenn du es.jetzt nicht verstehst, dann lass die Finger davon und lern erst mal an was leichterem. ;)

    new Objekt[20], id;
    Objekt[id]=CreateObject(19449,1236.3000488,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
    Objekt[id]=CreateObject(19449,1226.6999512,-1649.8000488,14.3000002,0.0000000,0.0000000,90.0000000); id++;
    //usw...


    for(new i=0; i<sizeof(Objekt); i++) SetObjectMaterial(Objekt[i],Index, 3922, bistro, sw_wallbrick_01, 0);


    Das wäre so der einfachste Weg.

    Der Compiler stürzt z.B. ab wenn du bei einem stock einen Integer und einen String als return Wert angibst, z.B. so:


    stock Test(a)
    {
    if(a == 1) return 2;
    else return "Hallo";
    }
    ^ Das zerlegt dir den Compiler.


    Es gibt bestimmt noch andere Gründe, ich würde dir raten, entweder ein Backup einzufügen (täglich eins machen!!) oder du suchst den Fehler mit der Skript Halbierungs Methode. Also immer die Hälfte des Codes auskommentieren, dort wo es abstürzt, wieder halbieren, bis du irgendwann auf den Fehler stößt. Geht schnell, und funktioniert.

    Hey. Wie kann ich abfragen, ob jemand auf dem Desktop ist?


    new SpielerUpdate[MAX_PLAYERS];
    public OnPlayerUpdate(playerid)
    {
    SpielerUpdate[playerid] = gettime();
    return 1;
    }


    Dann bei OnGameModeInit einen Timer:
    SetTimer("CheckDesktop", 1000, 1);


    forward CheckDesktop();
    public CheckDesktop()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(SpielerUpdate[i] + 2 < gettime())
    {
    new AufDesktopSeit = gettime() - SpielerUpdate[i];
    //Dann eben hier mit format und 3D Labels die Variable AufDesktopSeit anzeigen lassen.
    }
    }
    return 1;
    }


    Das +2 ist, damit es nicht immer angezeigt wird wenn es mal kurz laggt.


    Ich suche folgendes Textdraw bilde(wenn es dies gibt):


    Das sind dem Aussehen zufolge ganz viele kleine TextDraws, die geschickt aneinander gemacht worden sind. Mit viel Zeit und Kleinarbeit kannst du das mit einem Textdraw creator hinbekommen.
    Ein Bild gibt es aber nicht.