Beiträge von Madretsma

    Wie schon mehrmals gesagt habe ich im Skript nichts stehen was mit "erlauben,erlaubnis" etc zu tun hat.


    Lg 8)


    Hmm, okay. Ich ging jetzt von dem Grundskript aus, entschuldige bitte.


    EDIT: Tu einfach folgendes: Tu das hier in dein Skript, ist vom Original-Skript, dann kannste Leuten erlauben ein Kennzeichen zu kaufen: Einfach irgendwo am Ende rein:

    Spoiler anzeigen


    dcmd_kennzeichenerlauben(playerid,params[])
    {
    new Player, SpielerName[MAX_PLAYER_NAME], EigenerName[MAX_PLAYER_NAME];
    if(PlayerInfo[playerid][pAdmin] >= 4 || IsACop(playerid) || PlayerInfo[playerid][pLeader] == 7)
    {
    if(sscanf(params,"u",Player)) { return SendClientMessage(playerid, COLOR_GRAD1, "Benutzung: /kennzeichenerlauben [Spieler ID]"); }
    if(!IsPlayerConnected(Player)) { return SendClientMessage(playerid, COLOR_GRAD1, "Spieler ist nicht online!"); }
    if(KennzeichenErlaubnis1[Player] == 1) { return SendClientMessage(playerid, COLOR_GRAD1, "Der Spieler hat bereits die Erlaubnis ein Kennzeichen zu kaufen!"); }
    if(KennzeichenErlaubnis[Player] == 1) { return SendClientMessage(playerid, COLOR_GRAD1, "Der Spieler hat bereits ein Kennzeichen mit sich."); }
    GetPlayerName(Player, SpielerName, sizeof(SpielerName));
    GetPlayerName(playerid, EigenerName, sizeof(EigenerName));
    format(ALLSTRING, sizeof(ALLSTRING), "*Beamter %s hat dir erlaubt, einen Kennzeichen in der Stadthalle zu kaufen.", EigenerName);
    SendClientMessage(Player, COLOR_LIGHTBLUE, ALLSTRING);
    SendClientMessage(Player, COLOR_LIGHTBLUE, "*Gehe nun in die Stadthalle und kauf dir eins mit /kennzeichenkaufen (Preis: 5000$)");
    format(ALLSTRING, sizeof(ALLSTRING), "*Du hast %s erlaubt, sich einen Kennzeichen in der Stadthalle zu kaufen.", SpielerName);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, ALLSTRING);
    KennzeichenErlaubnis1[Player] = 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist kein Beamter!");
    }
    return 1;
    }




    Und das hier unter OnPlayerCommandText:


    Spoiler anzeigen
    dcmd(kennzeichenerlauben,19,cmdtext);

    Ich habe dir jetzt schon 2 mal gesagt, wie du das Problem löst, wenn du das jetzt persönlich nimmst, nicht mein Problem :D Liegt anscheinend an der nicht vorhandenen Kompetenz.


    Hast du mal nach KennzeichenErlauben gesucht? Wenn nein, tu das nun, dann bist du hier schnell fertig.


    MfG


    Madretsma


    EDIT: Wenn man ein Skript editiert, achtet man dann nicht darauf, nur das zu editieren was man versteht? Wie kann es vorkommen, dass dir Teile angeblich fehlen? Ergo nichts mit "Erlaubnis" im Skript zu finden sei? Verstehe ich nicht.

    Zeig mal den Code von: SetParkPlatz(playerid,Autohaus);
    Und den Code von: OnPlayerCarLogin(playerid);


    Den braucht er gar nicht. Er braucht lediglich einmal nach "Erlaubnis" suchen, ein paar mal F3 für "Find Next" drücken und er kommt auf eine Variable die sich "KennzeichenErlaubnis" nennt. Wenn er dann mal nach dieser Variable suchen würde, würde er sehr schnell zu einer Lösung kommen.


    Mit freundlichen Grüßen


    Madretsma

    Also manchmal glaube ich, ich lege bald ein Ei. Ich stelle ja auch gerne Fragen hier im Forum, aber wenn es wirklich dein Ernst ist, SO ETWAS zu fragen, dann weiß ich auch nicht mehr weiter. Habe mir das Skript grade runtergeladen und innerhalb von glaub ich 20 Sekunden herausgefunden, wie man jemandem ein Kennzeichen erlaubt. Tu einfach das was ich dir bereits sagte. Viel Erfolg.



    EDIT: Ich gehe davon aus, dass das hier das verwendete Skript ist:


    Sollen wir Hellsehen? Welches Skript benutzt du überhaupt? Jedes ist da verschieden, auch wenn es das gleiche VehicleSystem ist. Ich würde einfach mal die Befehle von Beamten (sprich Cops etc) durchgehen, dort müsstest du etwas finden. Sonst such doch einfach im gesamten Script mit STRG + F nach "Erlaubnis".


    Mit freundlichen Grüßen


    Madretsma


    Sehr gute Erklärung *_*


    Das Problem ist einfach das du die Datenbank viel mehr beanspruchst als würdest du nur einmal drauf zugreifen :) (@TE)


    Ja, das mag stimmen, jedoch in diesem Fall auch nur beim Serverstart, da ich grad zu Faul bin (ja ich weiß, falsche Einstellung :P) werd ich das aber NOCH nicht bei mir ändern, mach ich später wenn ich geschlafen habe :P


    Mit freundlichen Grüßen


    Madretsma

    Halli hallo liebe brotfische ;)


    Ich bin momentan dabei, ein kleines System zu schreiben, welches Ingame erstellte Objekte in einer MySQL Datenbank speichert - und beim Serverstart wieder ausliest und erstellt. Dafür habe ich eine Tabelle in ungefähr diesem Stil angelegt:



    Wie man sieht, ist in der Spalte "id" zwischen dem Vorletzten und dem letzten Eintrag eine Lücke (in der Nummerierung [ 4002, 4003, 4005] ).
    Meine Frage ist nun, wie kann ich denn bitte Eintrag für Eintrag anhand der "id" auslesen, und diese Lücke überspringen.


    Mein Code bisher ist folgendermaßen: (Wenn ich den aber benutze, crasht mein Server aber beim Start, da eben diese "Lücke" vorhanden ist)

    Spoiler anzeigen

    stock LoadObjectsForPremiumUsers()
    {
    new Query[255], id;
    format(Query, sizeof(Query), "SELECT * FROM playerobjects2");
    mysql_query(Query);
    new firstid;

    Spoiler anzeigen
    mysql_store_result();

    mysql_fetch_field("id",data);
    firstid=strval(data);

    new durchgang = 1;
    new rows = mysql_num_rows();
    for ( new j = 0; j < (rows); j++)
    {



    if ( durchgang == 1)
    {
    format(Query, sizeof(Query), "SELECT * FROM playerobjects2 WHERE id = %i",firstid);
    mysql_query(Query);
    mysql_store_result();
    } else
    {
    firstid = firstid += 1;
    format(Query, sizeof(Query), "SELECT * FROM playerobjects2 WHERE id = %i",firstid);
    mysql_query(Query);
    mysql_store_result();
    }



    mysql_fetch_field("id",data);
    pObject[j][object_did]=strval(data);

    mysql_fetch_field("besitzer",data);
    pObject[j][object_besitzer]=strval(data);

    mysql_fetch_field("model",data);
    pObject[j][object_model]=strval(data);

    mysql_fetch_field("x",data);
    pObject[j][ox]=floatstr(data);

    mysql_fetch_field("y",data);
    pObject[j][oy]=floatstr(data);

    mysql_fetch_field("z",data);
    pObject[j][oz]=floatstr(data);

    mysql_fetch_field("a1",data);
    pObject[j][a1]=floatstr(data);

    mysql_fetch_field("a2",data);
    pObject[j][a2]=floatstr(data);

    mysql_fetch_field("a3",data);
    pObject[j][a3]=floatstr(data);

    mysql_fetch_field("world",data);
    pObject[j][object_world]=strval(data);

    mysql_fetch_field("interior",data);
    pObject[j][object_interior]=strval(data);

    new string[255];
    format(string,255,"Objekt %i erstellt:: X: %f Y: %f Z: %f ",pObject[j][object_did],pObject[j][ox],pObject[j][oy],pObject[j][oz]);
    printf(string);
    pObject[j][object_id] = CreateDynamicObject(pObject[j][object_model],pObject[j][ox],pObject[j][oy],pObject[j][oz],pObject[j][a1],pObject[j][a2],pObject[j][a3],pObject[j][object_world],pObject[j][object_interior],-1);
    durchgang = durchgang + 1;
    printf("Es wurde ein Objekt geladen");
    }
    }



    Ist keine Lücke bei den "id" 's in der Tabelle vorhanden, funktioniert dieser Code wunderbar, lediglich bei einer "Lücke" unter den "id" 's crasht er mit. Kann jemand mir bitte helfen, ich tüftle schon lange an einer Lösung, aber mein Geist scheint grade nicht bereit dafür...


    Vielen lieben dank schonmal im Voraus!


    Mit freundlichen Grüßen


    Madretsma



    Genial, dies ist mit Sicherheit der einfachste Weg :D Ich danke dir vielmals für deine kompetente Hilfe. Den anderen natürlich EBENFALLS! Sehr schön, wie schnell einem hier geholfen wird. :D


    Danke, danke und nochmals danke, an alle von euch :D

    Vielen Dank, H4rd_B4se für die schnelle Antwort. Ich habe allerdings noch eine Frage dazu. Dies ist ja quasi eine Abfrage, ob der Spieler in einer Area ist, bezogen auf mein Beispiel:


    Ich habe eine eNum:
    enum eBaum {
    ID, Float:BaumX, Float:BaumY, Float:BaumZ,BaumLohn
    };


    new Baum[MAX_BAUM][eBaum] =
    {
    {0, -619.97174, -1523.16907, 17.77344, 50},
    {1,-612.53644, -1540.50085, 17.77344, 50},
    {2,-630.12268, -1537.01489, 17.77344, 50},
    {3,-612.73645, -1562.44958, 17.77344, 50},
    {4,-603.66724, -1591.87195, 17.77344, 50},
    {5,-621.33295, -1584.13110, 17.77344, 50}


    };




    Nehmen wir als Beispiel die ID 1 : X = -619.97174 Y = -1523.16907 Z = 17.77344


    Wäre es dann nun richtig (sorry für die Frage ich teste es auch gleich einfach) (Das "i" ist aus einer "for" Schleife, die jeden Baum durchgeht) :


    if((X < Baum[i][BaumX] - 5 && X > Baum[i][BaumX] + 5) && (Y < Baum[i][BaumY] - 5 && Y > Baum[i][BaumY] + 5 ))


    Vielen vielen Dank nochmals für deinen guten Ansatz, mit dem werde ich es früher oder später mit Sicherheit schaffen :D


    mfg Madretsma



    EDIT: Danke auch an dich Jeffry, werde mir dies mal anschauen, wenn ich mit dem anderen Vorschlag nicht weiterkomme. Hatte deinen Beitrag eben gar nicht gesehen :D

    Guten Tag liebe Community :D


    Ich habe eine dringende Frage, und zwar schreibe ich grade an einem Beruf und muss folgendes wissen:


    Ist es möglich (vllt über Umwege) bei der Abfrage "IsPlayerInRangeOfPoint" die Höhe zu ignorieren (Ignorieren zu lassen) ? Das wäre sehr nützlich, da ich ein Objekt via Tastendruck ein paar Einheiten nach unten bewege, und dann beim nächsten Tastendruck abfrage, ob man noch in der Nähe ist. Wenn das Objekt nun zu weit unten ist (Z-Coord) dann gibt die Abfrage IsPlayerInRangeOfPoint eine Null zurück, da das Objekt zu niedrig ist, man also auf der Z-Achse zu weit entfernt ist.


    Vielen Dank für eure Hilfe schomal im Voraus :D


    MfG Madretsma

    Ein Payday dauert z.B. jetzt 45 Minuten,
    dann schraubst du die zahl auf 60 Minuten hoch.
    Das heißt du bekommt jetzt nur jede Stunde einen Payday.
    Wolltest du doch oder nicht?


    Nene, ich wollte den beim PayDay erhaltenen Zinssatz auf das Bankkonto erhöhen ;)


    Mit freundlichen Grüßen


    Madretsma

    Ich nehme mal an der Payday funktioniert mit einem Timer, du musst beim timer die Anzahl an Minuten ändern.



    Ersteinmal, danke für deine Antwort und hilfsbereitschaft.
    Aber,
    wenn ich die Anzahl der Minuten des Timers ändere, erreiche ich doch nur, dass ich "mehr" (öfter) Payday's pro Stunde habe, oder von welchem Timer hast du gesprochen?


    Vielleicht habe ich dich auch net richtig verstanden. Hier ist nocheinmal der gesamte Timerinhalt:



    Spoiler anzeigen

    Function Timer1()
    {
    SyncTime();
    DollahScoreUpdate();
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(PlayerInfo[i][pTot] == 1)
    {
    pIstTot[i] += 1;
    }
    if(PlayerInfo[i][pTot] == 1 && pIstTot[i] == 2)
    {
    if(IsPlayerInFrac(i, 1))
    {
    SetPlayerColor(i,NAMECOLOR_LSCOP);
    }
    else
    {
    SetPlayerColor(i,TEAM_HIT_COLOR);
    }
    PlayerInfo[i][pTot] = 0;
    pIstTot[i] = 0;
    SetPlayerVirtualWorld(i,0);
    if(PlayerInfo[i][pJailed] == 0)
    {
    SetPlayerPos(i, 828.7285,-1102.7632,24.7891);
    SetCameraBehindPlayer(i);
    UnFreezePlayer(i);
    SetPlayerFacingAngle(i, 266.0591);
    SetPlayerSkin(i, PlayerInfo[i][pChar]);
    }
    else if(PlayerInfo[i][pJailed] > 0)
    {
    SetPlayerSpawn(i);
    UnFreezePlayer(i);
    SetPlayerSkin(i, PlayerInfo[i][pChar]);
    }
    DestroyPickup(TotenKopf[i]);
    GivePlayerMoney(i, -500);
    FraktionsKasse[3] += 500;
    }
    if(IsPlayerConnected(i) && gPlayerLogged[i])
    {
    PlayerUpdate(i);
    }
    if(IsPlayerConnected(i))
    {
    PlayerInfo[i][pGesamtMinutes]++;
    PlayerInfo[i][pMinutesSinceLogin]++;
    PlayerInfo[i][pMinutesSinceAn]++;
    if(PlayerInfo[i][pPlayMinutes] <= 60)
    {
    PlayerInfo[i][pPlayMinutes]++;
    }
    if(PlayerInfo[i][pPlayMinutes] >= 60)
    {
    PlayerInfo[i][pPlayMinutes] = 0;
    new string[128];
    new account,interest;
    new rent = 0;
    if(IsPlayerConnected(i))
    {
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(i, playername2, sizeof(playername2));
    account = PlayerInfo[i][pAccount];
    new key = PlayerInfo[i][pPhousekey];
    if(key != 255)
    {
    rent = HouseInfo[key][hRent];
    if(strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    rent = 0;
    }
    else if(rent > GetPlayerMoney(i))
    {
    PlayerInfo[i][pPhousekey] = 255;
    SendClientMessage(i, COLOR_WHITE, "Du wurdest aus der Wohnung geschmissen!");
    rent = 0;
    }
    HouseInfo[key][hTakings] = HouseInfo[key][hTakings]+rent;
    }
    new tmpintrate;
    if (key != 255 && strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
    {
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    tmpintrate = intrate+4;
    }
    else
    {
    tmpintrate = intrate+2;
    }//HouseInfo[key][hLevel]
    }
    else
    {
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    tmpintrate = 3;
    }
    else
    {
    tmpintrate = 1;
    }
    }
    if(PlayerInfo[i][pPbiskey] > 0)
    {
    tmpintrate++;
    }
    new fraktion = 0;
    new checks;
    if(PlayerInfo[i][pMember] > 0) fraktion = PlayerInfo[i][pMember] - 1;
    if(PlayerInfo[i][pLeader] > 0) fraktion = PlayerInfo[i][pLeader] - 1;
    if(fraktion >= 0)
    {
    if(FraktionsKasse[fraktion] - PlayerInfo[i][pGehalt])
    {
    GivePlayerMoney(i, checks);
    checks = PlayerInfo[i][pGehalt];
    GivePlayerMoney(i, checks);
    FraktionsKasse[fraktion] -= checks;
    }
    }
    else if(PlayerInfo[i][pJob] != 0 || PlayerInfo[i][pMember] == 0 || PlayerInfo[i][pLeader] == 0)
    {
    checks = 500;
    GivePlayerMoney(i, checks);
    }//Should work for every player online
    PlayerInfo[i][pAccount] -= Tax;
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    new bonus = PlayerInfo[i][pPayCheck] / 2;
    PlayerInfo[i][pPayCheck] += bonus;
    }
    new ebill = (PlayerInfo[i][pAccount]/10000)*(PlayerInfo[i][pLevel]);
    //new oil = (PlayerInfo[i][pPhousekey]*100);
    ConsumingMoney[i] = 1;
    if(PlayerInfo[i][pAccount] > 0)
    {
    PlayerInfo[i][pAccount] -= ebill;
    SBizzInfo[3][sbTill] = SBizzInfo[3][sbTill] + ebill;
    }
    else
    {
    ebill = 0;
    }
    interest = (PlayerInfo[i][pAccount]/3000)*(tmpintrate);
    PlayerInfo[i][pExp]++;
    PlayerPlayMusic(i);
    new stringss[128];
    format(stringss, sizeof(stringss), " Alter Kontostand: €%d", PlayerInfo[i][pAccount]);
    PlayerInfo[i][pAccount] = account+interest;
    SendClientMessage(i, 0x23FF00FF, "|________________________Kontoauszug|___________________|");

    SendClientMessage(i, COLOR_GRAD5, stringss);
    format(string, sizeof(string), " {C30000}Gehalt:{05FF00} €%d {C30000} Miete: {05FF00}-€%d {C30000} Steuern: {05FF00}-€%d", checks, rent, Tax);
    SendClientMessage(i, COLOR_RED, string);
    if(PlayerInfo[i][pPhousekey] != 255 || PlayerInfo[i][pPbiskey] != 255)
    {
    format(string, sizeof(string), " Strom Kosten: -€%d", ebill);
    SendClientMessage(i, COLOR_RED, string);
    }
    if(PlayerInfo[i][pHandyVer] == 1)
    {
    SendClientMessage(i,COLOR_GRAD2," Handyvertragskosten: -€20");
    GivePlayerMoney(i, -20);
    }
    if(PlayerInfo[i][pPlayerKreditDauer] > 0)
    {
    PlayerInfo[i][pAccount] -= PlayerInfo[i][pPlayerKredit];
    PlayerInfo[i][pPlayerKreditDauer]--;
    format(string, sizeof(string), " Kreditrate: -%d", PlayerInfo[i][pPlayerKredit]);
    SendClientMessage(i, COLOR_RED, string);
    }
    format(string, sizeof(string), " {FFF000} Zinsen: {00F5FF}€%d [0.%d Prozent]", interest,tmpintrate);
    SendClientMessage(i, COLOR_GRAD2, string);
    SendClientMessage(i, COLOR_YELLOW, "|_______________________________________________________|");
    format(string, sizeof(string), " Neuer Kontostand: €%d", PlayerInfo[i][pAccount]);
    SendClientMessage(i, COLOR_GRAD5, string);
    //format(string, sizeof(string), "~g~PayDay~y~!!!");
    GameTextForPlayer(i, string, 5000, 1);
    if(checks == 0 && FrakMember(i) && PlayerInfo[i][pJob] == 0)
    {
    SendClientMessage(i,COLOR_LIGHTRED, "Dein Leader hat dir kein Gehalt gesetzt oder die Fraktionskasse ist leer!");
    SendClientMessage(i,COLOR_LIGHTRED, "Fordere ihn auf dir dein Gehalt mit /setlohn einzustellen!");
    }
    rent = 0;
    PlayerInfo[i][pPayCheck] = 0;
    PlayerInfo[i][pConnectTime] += 1;
    if(WantedLevel[i] >= 1)
    {
    WantedLevel[i] --;
    new wlevel;
    wlevel = GetPlayerWantedLevel(i);
    new tmp[64];
    format(tmp,sizeof(tmp), "Aktuelles Wantedlevel: %i", wlevel-1);
    SendClientMessage(i, COLOR_GREEN,tmp);
    }
    if(PlayerInfo[i][pDonateRank] > 0)
    {
    PlayerInfo[i][pPayDayHad] += 1;
    if(PlayerInfo[i][pPayDayHad] >= 5)
    {
    PlayerInfo[i][pExp]++;
    PlayerInfo[i][pPayDayHad] = 0;
    }
    }
    }
    }
    }
    if(KnastTime[i] > 0)
    {
    KnastTime[i]--;
    }
    if(KnastTime[i] == 0 && Knast[i] > 0)
    {
    Knast[i] = 0;
    KnastTime[i] = 0;
    SpawnPlayer(i);
    SendClientMessage(i,COLOR_YELLOW," Benimm dich ab jetzt, oder ein Admin wird dich wieder einsperren!");
    }
    }
    return 1;
    }

    Spoiler anzeigen
    Function KHSP(playerid)
    {
    KHSperre[playerid] = 0;
    return 1;
    }


    Mit freundlichen Grüßen


    Madretsma

    Moin moin Breadfish ;D


    Ich bin hier auf dein Script gestoßen, habs mir mal gezogen und muss sagen, an sich ist's n Top Script, aber ein paar Kleinigkeiten (wie der zu bunte PayDay, Fehlende Ausgänge bei Interiors mancher Fraktionen..etc.etc..) stören den Gesamteindruck, sodass noch SEHR SEHR viel zu ändern ist. Was ja aber natürlich für einen guten Server dann später vonnöten ist.


    Nur habe ich zu dem Script noch eine Frage... Ich arbeite nun seit ein paar Tagen damit/daran - und nun habe ich ein Problem: Ich verstehe nicht, wie ich den Zinssatz beim Payday ein wenig hochschrauben kann. Ich bitte inständig um deine/eure Hilfe.
    Vielen Dank schonmal im Voraus!


    Mit freundlichen Grüßen


    Madretsma



    P.S.: Neu hier im Forum. Freut mich ein Teil dieser, wie es scheint, tollen Community werden zu können ;D