Beiträge von BlackLegend

    Also den PC noch aufzurüsten lohnt sich wirklich nicht mehr, da steckst du im Endeffekt mehr Geld rein,
    als wenn du dir einen neuen kaufst.
    Der, den du vorgeschlagen hast, ist zwar ganz ok, jedoch wird die Grafikkarte wohl kaum ausreichend sein.
    Zum Gamen empfehle ich dir eine Grafikkarte von NVidia, kommt jedoch ganz darauf welche du wählst und wieviel du ausgeben willst.


    Würde dir jetzt mal spontan den hier empfehlen:
    http://www.medion.com/de/elect…/110015997?category=pc_36
    Medion liefert eigentlich auch immer gute Angebote, wenns ums Preisleistungsverhältnis geht.


    Zu Ebay: wenn du Glück hast findest du dort gute Angebote, jedoch solltest du den PC vorher jemandem zeigen, der sich damit auskennt,
    bevor du ihn kaufst.
    Nicht überall wo Gaming-PC draufsteht ist auch Gaming-PC drin, wenn du verstehst, was ich meine.



    BlackLegend

    new money = inputtext[11];


    Du kannst einen String nicht so einfach in einen Integer umwandeln.
    Wenn du einen String in einen Integer konvertieren willst, benutzt du strval(string[]). (Bei Floats: floatstr(string[]))
    Ausserdem darfst du nicht nur ein Zeichen des inputtextes benutzen.
    inputtext[11] 
    Dies bedeutet das 11. Zeichen des inputtextes soll verwendet werden.
    Ebenfalls, wenn du etwas in die Datenbank speichern möchtest, reicht -money nicht aus,
    du musst schon den kompletten neuen Betrag angeben.


    So ist es richtig, wenn ich nichts übersehen habe:


    if(dialogid==DIALOG_FKASSE)
    {
    if(response==0)
    {
    ShowPlayerDialog(playerid, DIALOG_FKASSE_AUSZAHLEN,DIALOG_STYLE_INPUT,"Auszahlen","Bitte gebe den Betrag ein, den du aus der Fraktionskasse auszahlen möchtest","Auszahlen","Abbrechen");
    }
    if(response==1)
    {
    if(SpielerInfo[playerid][pLeader] >= 1)
    {
    ShowPlayerDialog(playerid, DIALOG_FKASSE_EINZAHLEN,DIALOG_STYLE_INPUT,"Einzahlen","Bitte gebe den Betrag ein, den du in die Fraktionskasse einzahlen möchtest","Einzahlen","Abbrechen");
    }
    }
    }
    if(dialogid==DIALOG_FKASSE_EINZAHLEN)
    {
    if(response==0)
    {
    if(strlen(inputtext) > 0)
    {
    new money = strval(inputtext);
    if(GetPlayerMoney(playerid) < money)
    {
    SendClientMessage(playerid,Grau,"Du hast nicht soviel Geld auf der Hand, wie du eingetippt hast");
    ShowPlayerDialog(playerid, DIALOG_FKASSE_EINZAHLEN,DIALOG_STYLE_INPUT,"Einzahlen","Bitte gebe den Betrag ein, den du in die Fraktionskasse einzahlen möchtest","Einzahlen","Abbrechen");
    return 1;
    }
    else
    {
    GivePlayerMoney(playerid, -money);
    money = mysql_GetInt("fraktionen", "frakgeld", "frakid", Fraktionen[Fraktid]) - money;
    mysql_SetInt("fraktionen", "frakgeld", money, "Frakid", SpielerInfo[playerid][pFraktion]);
    SendClientMessage(playerid, Weiß, "Geld wurde übertragen");
    }
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_FKASSE_EINZAHLEN,DIALOG_STYLE_INPUT,"Einzahlen","Bitte gebe den Betrag ein, den du in die Fraktionskasse einzahlen möchtest","Einzahlen","Abbrechen");
    return 1;
    }
    }
    }
    if(dialogid==DIALOG_FKASSE_AUSZAHLEN)
    {
    if(response==0)
    {
    new money2 = mysql_GetInt("fraktionen", "frakgeld", "frakid", Fraktionen[Fraktid]);
    new money = strval(inputtext);
    if(money2 < money)
    {
    SendClientMessage(playerid, Grau, "In der Kasse ist nicht soviel Geld, wie du eingetippt hast");
    return 1;
    }
    else
    {
    GivePlayerMoney(playerid, money);
    mysql_SetInt("fraktionen", "frakgeld", - money, "Frakid", SpielerInfo[playerid][pFraktion]);
    return 1;
    }
    }
    }
    return 1;
    }



    BlackLegend

    Dieser Fehler bedeutet, dass etwas, was das Script benötigt fehlt oder inkompatibel ist und nicht benutzt werden kann.
    Sicher, dass alle erforderlichen Plugins vorhanden und in der .cfg eingetragen sind und die richtige Pluginversion benutzt wird?





    BlackLegend

    Zum zweiten Problem:
    Wenn du abfragen willst, welcher Dialog aufgerufen wurde, verwendest du
    if(dialogid == DIALOG_ID)


    und nicht


    if(listitem == DIALOG_ID)


    Folglich sieht der korrekte Code so aus:


    if(dialogid==DIALOG_FKASSE)
    {
    if(response==0)
    {
    ShowPlayerDialog(playerid, DIALOG_FKASSE_EINZAHLEN,DIALOG_STYLE_INPUT,"Einzahlen","Bitte gebe den Betrag ein, den du in die Fraktionskasse einzahlen möchtest","Einzahlen","Abbrechen");
    }
    if(response==1)
    {
    if(SpielerInfo[playerid][pLeader] >= 1)
    {
    ShowPlayerDialog(playerid, DIALOG_FKASSE_AUSZAHLEN,DIALOG_STYLE_INPUT,"Auszahlen","Bitte gebe den Betrag ein, den du aus der Fraktionskasse auszahlen möchtest","Auszahlen","Abbrechen");
    }
    }
    }
    if(dialogid==DIALOG_FKASSE_EINZAHLEN)
    {
    if(response==0)
    {
    if(strlen(inputtext) > 0)
    {
    new money = inputtext[11];
    if(GetPlayerMoney(playerid) < money)
    {
    SendClientMessage(playerid,Grau,"Du hast nicht soviel Geld auf der Hand, wie du eingetippt hast");
    ShowPlayerDialog(playerid, DIALOG_FKASSE_EINZAHLEN,DIALOG_STYLE_INPUT,"Einzahlen","Bitte gebe den Betrag ein, den du in die Fraktionskasse einzahlen möchtest","Einzahlen","Abbrechen");
    return 1;
    }
    else
    {
    GivePlayerMoney(playerid, - money);
    mysql_SetInt("fraktionen", "frakgeld", money, "Frakid", SpielerInfo[playerid][pFraktion]);
    return 1;
    }
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_FKASSE_EINZAHLEN,DIALOG_STYLE_INPUT,"Einzahlen","Bitte gebe den Betrag ein, den du in die Fraktionskasse einzahlen möchtest","Einzahlen","Abbrechen");
    return 1;
    }
    }
    }
    if(dialogid==DIALOG_FKASSE_AUSZAHLEN)
    {
    if(response==0)
    {
    new money2 = mysql_GetInt("fraktionen", "frakgeld", "frakid", Fraktionen[Fraktid]);
    new money = inputtext[11];
    if(money2 < money)
    {
    SendClientMessage(playerid, Grau, "In der Kasse ist nicht soviel Geld, wie du eingetippt hast");
    return 1;
    }
    else
    {
    GivePlayerMoney(playerid, money);
    mysql_SetInt("fraktionen", "frakgeld", -money, "Frakid", SpielerInfo[playerid][pFraktion]);
    return 1;
    }
    }
    }
    return 1;



    BlackLegend

    Nicht unbedingt, die bemerkt er dann ingame.
    Schau dir seinen Code doch an:


    if(!IsACop(killerid) && !(IsAFightFaction(GetPlayerFaction(killerid)) && IsPlayerInArea(killerid, 1060.145,-1721.339,1166.624,-1583.168 || IsPlayerInArea (killerid, 990.2909,1821.38,1177.724,2057.332 || IsPlayerInArea (killerid, -887.5186,1377.989,-583.8938,1634.903 || IsPlayerInArea (killerid, -2506.7,740.0255,-2383.094,826.8147 || IsPlayerInArea (killerid, -1850.044,1438.284,-1710.987,1584.248 || IsPlayerInArea (killerid, -1891.4263,857.8361,-1722.0261,1095.5897 || IsPlayerInArea (killerid, 1828.318,-1938.465,2071.699,-1760.817 || IsPlayerInArea (killerid, 1828.0573,-2161.2705,1956.4136,-2057.7964 ))))))))))


    Merkste was?
    IsPlayerInArea(killerid, 1060.145,-1721.339,1166.624,-1583.168 <- Hier|| IsPlayerInArea (killerid, 990.2909,1821.38,1177.724,2057.332 <- oder hier || IsPlayerInArea (killerid, -887.5186,1377.989,-583.8938,1634.903 ||





    BlackLegend

    Ich sag dir aber schon vorweg, dass die Klammern falsch gesetzt sind.


    if(!IsACop(killerid) && !(IsAFightFaction(GetPlayerFaction(killerid)) && (IsPlayerInArea(killerid, 1060.145,-1721.339,1166.624,-1583.168) || IsPlayerInArea (killerid, 990.2909,1821.38,1177.724,2057.332) || IsPlayerInArea (killerid, -887.5186,1377.989,-583.8938,1634.903) || IsPlayerInArea (killerid, -2506.7,740.0255,-2383.094,826.8147) || IsPlayerInArea (killerid, -1850.044,1438.284,-1710.987,1584.248) || IsPlayerInArea (killerid, -1891.4263,857.8361,-1722.0261,1095.5897) || IsPlayerInArea (killerid, 1828.318,-1938.465,2071.699,-1760.817) || IsPlayerInArea (killerid, 1828.0573,-2161.2705,1956.4136,-2057.7964)))


    So sollte es richtig sein, einfach alles ans Ende klatschen ist zwar schön, jedoch keine Lösung:D



    BlackLegend

    Genau er speichert alle Spielerdaten in den RAM.
    Wenn du jetzt die Daten von einem Spieler auslesen möchtest, verwendest du folgende Abfrage:


    SELECT * FROM spielerdaten WHERE Spielername='Test'


    Musst du natürlich noch an deine Tabelle anpassen, ist nur ein Beispiel.
    Jetzt kommts drauf an, welches MySQL Plugin du benutzt, bei dem von Strickenkid liest man ein Feld so aus:


    new daten[256];
    mysql_fetch_field("Level",daten); SpielerLevel = strval(daten);
    Achte dadrauf, dass du je nach Datentyp entweder floatstr (Floats), strval (Integer) oder strmid (Strings) verwenden musst
    um den Datenstring umzuwandeln bzw. zu übertragen.





    BlackLegend

    Nein... nur die Zeichen in dem Grün markiertem Bereich.
    Jedoch wird ja für %s ebenfalls ein String eingesetzt, die Zeichen aus diesem musst du ebenfalls zur Größe hinzurechnen, genauso wie die Zahlen.
    Deswegen macht man den String auch etwas größer und zählt nicht genau die einzelnen Zeichen ab:)




    BlackLegend

    mysql_store_result: Speichert das Ergebnis der ausgeführten Query. Beispielsweise du verwendest "SELECT * FROM spielerdaten", dann ist das Ergebnis alles aus den Spielerdaten.
    mysql_free_result: Gibt das gespeicherte Ergebnis wieder frei, wenn du dies nicht machst, kommt es bei der nächsten Abfrage zu Fehlern.
    mysql_num_rows: Gibt an, wieviele "Ergebnisse" gefunden wurden. Beispielsweise die Query lautet: "SELECT * FROM spielerdaten WHERE Spielername='Test123', dann ist der zurückgegebene Wert die Anzahl der gefundenen Ergebnisse. Wenn der Spieler also einmal in der Datenbank gefunden wurde, ist das Ergebniss dementsprechend auch 1.




    BlackLegend

    Nein, das ist nicht möglich. Es handelt sich hierbei um Millisekunden.
    Außerdem wird erst der eine Befehl ausgeführt und dann der andere.
    Das heißt, eine Überlappung ist nicht möglich.




    BlackLegend

    Als erstes musst du eine Tabelle in der MySQL Datenbank erstellen, sagen wir du nennst sie "fraktionskassen".
    In der Tabelle legst du entsprechende Felder an, wie zum Beispiel "FraktionsID" und "Geld".


    Wenn du das hast kannst du im Script folgendes benutzen:


    mysql_SetInt("fraktionskassen", "Geld", Fraktionsgeld, "FraktionsID", Fraktionsid);


    Fraktionsgeld ist in diesem Fall das Geld, dass die Fraktion besitzt und welches gespeichert werden soll.
    Fraktionsid ist die Fraktion, die das entsprechende Geld besitzt. Alles zusammen wird in der Tabelle "fraktionskassen" gespeichert.


    Der SQL Syntax würde in diesem Fall wie folgt lauten:

    SQL
    "UPDATE fraktionskassen SET Geld='Fraktionsgeld' WHERE FraktionsID='Fraktionsid'

    OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(!IsPlayerInAnyVehicle(playerid) && (newkeys & taste))//Für taste musst du die Keyid eingeben, um die ID rauszufinden benutzt du am besten einen Keydetector.
    {
    new Float:PosX, Float:PosY, Float:PosZ;
    GetVehiclePos(407, PosX, PosY, PosZ);
    if(IsPlayerInRangeOfPoint(playerid, 3.0, PosX, PosY, PosZ))
    {
    ShowPlayerDialog(playerid, ............);
    }
    }
    }




    BlackLegend

    Nein?


    Wenn killerid kein Cop ist und er sich nicht einem Gangfight und nicht in einem Gangfightgebiet befindet, dann gebe ihm Wanteds.


    Das "!" vor der Abfrage heißt, dass das Ergebnis umgekehrt wird, also NOT.
    Wenn NOT(IstInEinemGangfight && IstInEinemGangfightGebiet).


    Deswegen steht das beides ja in der Klammer, das NOT bezieht sich auf das, was in der Klammer steht.
    Hoffe du hast es verstanden, ist aufjedenfall richtig.




    BlackLegend

    Das fügst du irgentwo unten is Script, ausserhalb einer Funktion:


    stock IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
    {
    new Float:pX,Float:pY,Float:pZ;
    GetPlayerPos(playerid,pX,pY,pZ);
    if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return 1;
    else return 0;
    }


    Dann an der Stelle, wo man die Wanteds bekommt:


    if(!IsACop(killerid) && !(IsAFightFaction(GetPlayerFaction(killerid)) && IsPlayerInArea(killerid, minX, minY, maxX, maxY)))
    {
    WantedPoints[killerid]+=3;
    SetPlayerCriminal(killerid,255, "Mord");
    }


    So dürfte das funktionieren.




    BlackLegend