Beiträge von Kaliber

    Aber müssen Godfather bezogene Themen denn extra markiert sein? Das Problem im Thread ist ja schließlich das gleiche, egal ob GF oder sonst was. Oder sehe ich das falsch?


    Naja...nicht direkt, aber schon ein bisschen, wegen den Variablenamen und den Abfragen.


    Somit kann man halt direkt und schneller Lösungsvorschläge geben, ohne eine genauere Problembeschreibung zu haben.


    PS: Aber mir ist das eigentlich egal, wie gesagt, ist jetzt nicht so wichtig, da man das eh immer schreiben sollte :whistling:


    mfg. :thumbup:

    Mach das mal so:


    new kaufveh[4];


    //Dann das:
    kaufveh[0] = AddStaticVehicle(402,-1955.7681,256.6182,40.8785,359.1914,39,39); // Buffalo
    kaufveh[1] = AddStaticVehicle(603,-1946.7122,258.1071,40.8855,44.3233,18,1); // Phönix
    kaufveh[2] = AddStaticVehicle(560,-1945.0530,274.2060,40.7528,137.7293,37,0); // Sultan
    kaufveh[3] = AddStaticVehicle(556,-1955.9196,302.7108,41.4220,180.3202,1,1); // Monster


    //Dann so abfragen:
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    for(new i; i<sizeof(kaufveh); i++) {
    if(GetPlayerVehicleID(playerid) == kaufveh[i]) {
    SendClientMessage(playerid,-1,"moin!"),print("moin");
    break;
    }
    }
    }
    return 1;
    }


    mfg. :thumbup:

    Nach Rücksprache mit dem Team habe ich mal ein wenig im Forum aufgeräumt.


    Das wurde auch mal Zeit, gute Arbeit! ^^


    Zu Punkt 1, das ist zwigespalten. Zum einen weiß man, wenn jemand da was reinschreibt sofort, dass es sich um ein GF handelt und weiß schon wie man damit umzugehen hat.
    Andererseits halten sich eh die wenigsten daran und schreiben alles in die normale Scripting Base...somit finde ich macht es schlussendlich nicht so den Unterschied.


    mfg. :thumbup:

    Das kannst du so machen:


    new string[100],buffer[50];//String Array evtl erhöhen bei mehr Autos
    if(IsPlayerInRangeOfPoint(playerid,1.0,AutoHaus[0][iX],AutoHaus[0][iY],AutoHaus[0][iZ]))
    {
    for(new i; i<sizeof aAutoHaus; i++) format(buffer,sizeof buffer,"Name: %s (Preis: %d$)",aAutoHaus[i][aName],aAutoHaus[i][aPreis]),strins(string,buffer,strlen(string),sizeof string);
    ShowPlayerDialog(playerid,AUTOHAUS,DIALOG_STYLE_LIST,"Autohaus",string,"Weiter","Abbrechen");
    }


    mfg. :thumbup:

    Steht immer noch.
    obe Supporter.


    Dann hast du den Code nicht abgeändert wie oben!


    Lösche das alte und kopiere das hier 1 zu 1 :pinch:



    mfg. :wacko:

    Ich weis ja nicht wie ich das ändern kann.
    mit das Admins da immer schreiben können.


    Oh hab was vergessen, schreib es so:


    static const a_rang[][] = {"User","Probe Supporter","Supporter","Moderator","Administrator","Rcon.Admin","TeamLeiter","CEO"};
    static bool:oc;


    ocmd:oooc(playerid) {
    if(!GetPVarInt(playerid,"Adminlevel")) return SendClientMessage(playerid,-1,"Du bist kein Administrator!");
    if(!oc) return oc=true,SendClientMessage(playerid,-1,"Du hast den OOC-Chat aktiviert!");
    return oc=false,SendClientMessage(playerid,-1,"Du hast den OOC-Chat deaktiviert!");
    }


    ocmd:ooc(playerid,params[]) {
    if(!oc && !GetPVarInt(playerid,"Adminlevel")) return SendClientMessage(playerid,-1,"Der OOC-Chat ist deaktiviert!");
    if(!params[0]) return SendClientMessage(playerid,-1,"Verwendung: /ooc [Text]");
    new text[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return format(text,144,"* %s %s: %s",a_rang[GetPVarInt(playerid,"Adminlevel")],name,params),SendClientMessageToAll(-1,text);
    }


    mfg. :thumbup:

    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle); // DIE ZEILE


    Schreib das unten in dein Script:


    stock cache_get_field_content_int(idx,name[]) {
    new temp[12];
    cache_get_field_content(idx, name, temp);
    return strval(temp);
    }


    //Und ändere die Zeile in diese:
    sInfo[playerid][level] = cache_get_field_content_int(0,"level");


    mfg. :thumbup:


    Schreib mal oben in dein Script:


    #define mysql_escape_string mysql_real_escape_string


    und zeig mal wie du cache_get_field_content_int nutzt, also was in dieser Zeile steht ;)


    mfg. :thumbup:

    Mit Freundlichen Grüßen


    Alles klar, dann könntest du es so machen:


    static const a_rang[] = {"User","Probe Supporter","Supporter","Moderator","Administrator","Rcon.Admin","TeamLeiter","CEO"};
    static bool:oc;


    ocmd:oooc(playerid) {
    if(!GetPVarInt(playerid,"Adminlevel")) return SendClientMessage(playerid,-1,"Du bist kein Administrator!");
    if(!oc) return oc=true,SendClientMessage(playerid,-1,"Du hast den OOC-Chat aktiviert!");
    return oc=false,SendClientMessage(playerid,-1,"Du hast den OOC-Chat deaktiviert!");
    }


    ocmd:ooc(playerid,params[]) {
    if(!oc) return SendClientMessage(playerid,-1,"Der OOC-Chat ist deaktiviert!");
    if(!params[0]) return SendClientMessage(playerid,-1,"Verwendung: /ooc [Text]");
    new text[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return format(text,144,"* %s %s: %s",a_rang[GetPVarInt(playerid,"Adminlevel")],name,params),SendClientMessageToAll(-1,text);
    }


    -1 Ist die Farbe (weiß), kannst du überall anpassen wenn du willst ;)


    mfg. :thumbup:


    //Edit: Achso den Namen vergessen.

    Natürlich können wir dir helfen :)


    Aber...dazu bräuchten wir ein paar Informationen, wie ist denn die Verteilung der Adminlevel, sprich ab wann ist man was?


    mfg. :thumbup:

    Hier mal ein Codeschnipsel für die Konvertierung von 1000 in 1.000, gab es zwar schon, aber die hier ist besser:


    stock sMoney(geld) {
    new str[24],i;valstr(str,geld),i=(geld > 0) ? strlen(str)-3 : strlen(str)-4;
    for(; i>0; i-=3) strins(str,".",(geld > 0) ? i : i+1,24);
    return str;
    }


    //Nutzung:
    printf("%s$",sMoney(10000)); //-> Output: 10.000$


    mfg. :thumbup:

    Schreibs so:


    stock Login(playerid,key[])
    {
    new ACC[64],ACCName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,ACCName,sizeof(ACCName));
    format(ACC,sizeof(ACC),"/Accounts/%s.txt",ACCName);
    if(!strcmp(key,dini_Get(ACC,"Passwort"),true))
    {
    SCM(playerid,BLAU,"Sie haben sich erfolgreich eingeloggt");
    }
    else
    {
    SCM(playerid,ROT,"Sie haben ein Falsches Passwort eingegeben , bitte versuchen sie es erneut!");
    }
    return 1;
    }


    mfg. :thumbup:

    und auch nicht zu kompliziert zu machen..


    Naja, du musst ein TextDraw erstellen, es über die Normale Client Anzeige machen und dort kannst du dann folgende Funktion verwenden:


    stock sMoney(geld) //(c) by Kaliber
    {
    new str[24];valstr(str,geld);
    for(new i=strlen(str); i>0; i-=3) {
    if(i==strlen(str)) i = (geld > 0) ? i : i-4;
    if(i!=strlen(str)) strins(str,".",(geld > 0) ? i : i+1,24);
    }
    return str;
    }


    //Beispiel:
    printf("%s$",sMoney(1000)); //Output -> 1.000$


    Damit kannst du dein Geld in einen String mit einem . Konvertieren ;)


    mfg. :thumbup:


    //Edit: So jetzt geht es auch im negativen Bereich.