Beiträge von Saargreen

    MySQL, da es Programmiersprachenumfassend ist.


    Was in einer MySQL DB abgespeichert ist kann mit nahezu allen gängigen Programmiersprachen abgefragt und verarbeitet werden. Sprich User Control Panel usw... Außerdem arbeitet MySQL sehr viel schneller als jedes ini/txt-Filesystem.

    Naja ich bin mir zu 99% Sicher dass IPv6 für uns "Otto-normal-User" keine großen Folgen haben wird, außer dass man sich die Adressen jetzt noch schlechter merken kann :)

    Gerade für die Werbegaenturen wäre das ein Triumph! Nutzerprofile etc, Maßgeschneiderte Werbung. Facebook ist dann überall.


    Ich denke aber dass es dann schon zu "intim" wird und Datenschützer dann eingreifen werden. Ich hoffe es wird dynamisch abgewickelt
    (ich würde ja beten, aber ich glaube nicht an Wesen die im Himmel schweben und mir sagen was ich wann und wo zu tun hab')

    Er will ja dass er mit einem Befehl verschiedene Tore aufmachen kann. Siehe meinen Beitrag.

    Du speicherst den Namen als String:

    if(sscanf(params,"s",pid))return SendClientMessage(playerid,Gelb,"Benutzung: /goto [ID]!");


    Speichere ihn als Uservariable ab:


    if(sscanf(params,"u",pid))return SendClientMessage(playerid,Gelb,"Benutzung: /goto [ID]!");


    Sprich: "s" durch "u" ersetzen :)

    ocmd:tor(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,DEINEPOS))
    {
    if(!isPlayerInFrakt(playerid,1)) return SendClientMessage(playerid,türkis,"Du bist kein Polizist");
    if(IsPlayerInRangeOfPoint(playerid,10, 1592.19, -1638.02, 13.43)) // wenn er in der nehe des Tores ist soll es nur runter/rauf gehen
    MoveObject(tor, 1592.19, -1638.02, 13.43-10,10); // und hier gehts runter..
    SetTimerEx("torzu", 1000*5, 0, "i", playerid);
    }
    else if(IsPlayerInRangeOfPoint(playerid,ZWEITEPOS))
    {
    //Hier dann eben das andere Tor....
    }
    return 1;
    }


    Aber mein Tipp:


    Du solltest die Grundfunktionen verstehen. Wer nicht weiß
    wo eine simple If-Abfrage verwendet werden muss, sollte mit
    etwas leichterem anfangen und nicht Sachen einbauen
    die er nicht versteht....


    /e wegen Rechtschreib-Quark :D


    //edit 2:


    Warum SetTimerEx? Du nimmst die Variable "playerid" mit, benutzt sie aber im public "torzu" gar nicht...

    //edit


    Da war jemand schneller ^^


    //edit jetzt hat der's weg gemacht XDD


    also hier wieder:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    SetPlayerScore(playerid,GetPlayerScore(playerid) - 1);
    SetPlayerScore(killerid,GetPlayerScore(killerid) + 1);
    return 1;
    }

    Nene, passiert ja unregelmäßig. Wie gesagt manchmal nach 1 minute Server uptime, manchmal erst nach 5...

    Hm, läuft ja alles über MySQL.... Der Server läuft zum Testen bei Nitrado, ich kann dort leider nirgens den Status des Server sehen glaube ich.

    Hi Leute.


    Ich habe ein kleines Problem und zwar schmiert mein kleiner DM Server regelmäßig ab. Nicht etwa,
    indem er ausgeht und wieder neu startet, nein es wird einfach so nach 1-4 Minuten Laufzeit des Servers
    alles blockiert. Es wird kein Public mehr ausgeführt, absolut KEINE Funktion des Scripts funktioniert mehr....
    Mysteriöser Weise fängt er sich wieder und nach weiteren 1-2 Minuten funktioniert für 1-2 Minuten wieder alles.
    Dann wiederholt sich das ganze von Vorne. Ich habe keine offensichtlichen Timer usw die nach diesem Intervall
    etwas ausführen, es passiert sogar wenn gar kein User online ist, bzw nur einer da ist aber ABSOLUT nichts schreibt
    oder irgendein Befehl benutzt.


    Hat jemand eine Idee warum und durch was so etwas ausgelöst werden kann?
    Danke schomal im Vorraus!


    Mit freundlichen Grüßen.

    Deine Funktion an sich sollte so weit funktionieren, allerdings hast du in deinem 'printf()' Aufruf die falsche Formatierung verwendet. Für ganze Zahlen bzw. Integers musst du entweder '%d' oder '%i' verwenden. Dasselbe gilt für Gleitkommazahlen für die du '%f' verwenden musst. Solltest du immer noch falsche Werte bekommen würde ich an deiner Stelle einfach mal probieren die formatierte SQL-Anfrage im Server via printf() auszugeben.

    *facepalm*
    WIE KANN ICH NUR SO SAUDOOF SEIN -.- Danke BlueG :)


    //edit:


    Die Ints läd er also richtig...
    Aber das war ja nicht das Problem. Das Problem ist, dass er trotz allem die Floats nicht richtig ausliest. Beim Ausloggen speichere ich die aktuellen Koordinaten in der DB.
    Lade ich sie kommt dieses typische "Stay within the worlds boundaries" und der Bildschirm wird weiß. Eigentlich kann es ja nur an den Floats hängen, denn er liest das Passwort, will den
    Spieler dort hin setzen und schnipp, server schmiert ab. Oder er versucht die virtual world oder den Interior auf sqltest1 zu setzen, kann meines Wissens nach doch auch den Server crashen.
    Fakt ist: Auch mit %d statt %s (ich schäme mich immer noch für den Fehler ^.^) liest er das Passwort aus.


    //e2:


    Es liegt DEFINITIV am Laden der Floats. Beim ausloggen wird x,y,z,int, und world in die DB geschrieben, die stimmen dann auch.
    Beim Laden des Accounts werden mit folgenden 3 Zeilen x,y,z geladen:

    SetPVarFloat(playerid,"AuslogPosX",mysql_GetFloat("accounts", "AuslogPosX", "Name", name));
    SetPVarFloat(playerid,"AuslogPosY",mysql_GetFloat("accounts", "AuslogPosY", "Name", name));
    SetPVarFloat(playerid,"AuslogPosZ",mysql_GetFloat("accounts", "AuslogPosZ", "Name", name));


    Dann wird der User dort hin gesetzt und der Bildschirm wird langsam weiß und flackert usw. Es liegt nicht an der Struktur des Scripts,
    vorher basierte es auf Dini und es funktionierte....


    //e3:


    Ich habe beim Laden des Accounts folgende Zeile eingefügt:


    printf("%f | %f | %f",mysql_GetFloat("accounts", "AuslogPosX", "Name", name),mysql_GetFloat("accounts", "AuslogPosY", "Name", name),mysql_GetFloat("accounts", "AuslogPosZ", "Name", name));


    Das Resultat:


    [17:48:29] -./,),(-*,(.(((((( | -./,),(-*,(.(((((( | -./,),(-*,(.((((((


    Hier der Stock der die Floats lädt:


    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    sqlfloat = mysql_fetch_float(connection);
    mysql_free_result();
    return sqlfloat;
    }

    //update:


    Hey Leute.


    Ich benutze das MySQL Plugin von Strickenkid.....
    Ich hab das hier ja schon fast gelöst, ein Problem bleibt allerdings.
    Ich habe diese Funktion:


    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    sqlfloat = mysql_fetch_float(connection);
    mysql_free_result();
    return sqlfloat;
    }


    Allerdings failt diese Funktion fatalst.... In dieser Benutzung:


    printf("%f",mysql_GetFloat("accounts", "AuslogPosX", "Name", name));


    Steht im Log folgendes:


    -./,),(-*,(.((((((


    Kann jemand helfen?
    Mit freundlichen Grüßen!

    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    SendClientMessage(playerid,0xF5FF00FF,"Du kannst das Fahrzeug mit {0xFF0000FF}/motor {0xF5FF00FF}starten.Die Scheinwerfer können mit {0xFF0000FF}/licht {0xF5FF00FF}angeschaltet werden.");
    return 1;
    }



    Haste die Klammer auch wieder zu gemacht? :o


    //edit:


    du musst bei den Farbcodes im String glaub ich die ersten 4 Zeichen weglassen.
    Sprich:
    statt {0xFF0000FF}
    Probier mal {0000FF}



    //edit 2:
    Schrift verkleinert

    OMG ist das jetzt dein Ernst? Ich geb Dominik hierbei recht.

    Zitat

    Danach schreiben wir unter OnGameModeInit

    Achso, wir schreiben es UNTER OGMI.
    Wenn ich nicht scripten könnte würde ich deinen SetTimer kopieren, und UNTER die geschweifte Klammer unter OGMI einfügen.


    Dann der Hammer:


    Ok. Ich schreibe einfach oben in irgendein Public "forward tuttimer();" rein und dann "habe ich eins erstellt"


    Was habe ich denn bitte erstellt? Du schreibst einfach nur "Dann haben wir eins erstellt".



    Also bitte, wenn ein Anfängerscripter, also jemand der gar nicht scripten kann (so wie du, wenn ich mir mal durchlese was du hier alles schreibst...) dieses "Tut" liest rennt er schreiend aus dem Forum und begeht Selbstmord....


    Also wenn du Tutorials für Anfänger schreiben willst, lern selbst erst mal zu scripten!