Beiträge von ErikSon

    Hier mal ein wenig besser:
    COMMAND:createclan(playerid, params[]){
    new name[32],tag[8],rank[32][6];
    SendClientMessage(playerid,-1,"Der Clan-Name sowie die Rank-Namen können 32 Zeichen enthalten! Der Clan-Tag allerdings nur 8!");
    if(sscanf(params,"ssssssss",name,tag,rank[0],rank[1],rank[2],rank[3],rank[4],rank[5]))return SendClientMessage(playerid, COLOR_RED, "Benutze /createclan [Clan-Name] [Clan-Tag] [Rank-Name1] [Rank-Name2] [Rank-Name3] [Rank-Name4] [Rank-Name5] [Rank-Name6]");
    if(PlayerInfo[playerid][pGeld] < 100000)return SendClientMessage(playerid, COLOR_RED, "Du brauchst $100.000 !");
    for(new i = 0; i<6; i++)if(strlen(name) > 32 || strlen(tag) > 8 || strlen(rank[i]) > 32)return SendClientMessage(playerid,-1,"Der Clan-Name sowie die Rank-Namen können 32 Zeichen enthalten! Der Clan-Tag allerdings nur 8!");
    CreateClan(name, tag, rank[0],rank[1],rank[2],rank[3],rank[4],rank[5]);
    return SaveClans();
    }


    Debugge doch alles, dann findest du den Fehler sicherlich.. Wenn man einen Befehl falsch scriptet ( iein Fehler im Code ist ), dann zeigt er an, dass der Code nicht existiert..



    tobialvarez: @Post unten:
    Änder mal das:
    stock CreateClan(name[], Tag[], CRank1[], CRank2[], CRank3[], CRank4[], CRank5[], CRank6[])
    zu
    stock CreateClan(name[32], Tag[8], CRank1[32], CRank2[32], CRank3[32], CRank4[32], CRank5[32], CRank6[32])
    ...
    Du verschwendest so unnötige Ressourcen, falls ich nicht falsch informiert bin..

    Schon, aber ich wollt halt nicht, dass man bei jedem Filterscript von mir, dass auch was bei einem Spieler speichern muss, dass das dann extra Dateien / bzw eine Datei erstellt, wo dann alles gesaved ist..
    Dachte mir, es gefällt euch so besser .. :/

    Danke euch..


    Ich lese mir doch nicht den Thread dazu durch aber okay.
    Wie meinst du das denn mit speichern? PVars werden nach dem logout wieder auf 0 gesetzt.


    PVars können von Main-Script zu Filterscript arbeiten
    ... Bei eurem Speichersystem setzt ihr dann in die Datei, die in den PVar gespeicherten Daten..

    Hey,
    lies mal den ersten Satz im Thread, dann weist du, warum ich gestern in ca 30 Minuten oder so 2 Systeme rausgebracht habe.. ;)


    Ich nutze PVars, damit ihr das dann auch speichern könnt ;)
    Ansonsten muss der Spieler ja nach jedem Relog wieder eingeladen werden..

    Du kannst das Geld dann per 'float (Geld..- bzw + MwSt bzw Betrag)' zu einem Float machen und ihn dann per 'floatround' runden..


    //Handy, kann dir deswegen kein Beispiel-Code geben

    Ich würde dir raten, es mit 2 Integern zu machen, da es bei den Floats, wie du bereits gehört und gesehen hast, zu ungenau ist..


    Und das Ganze mit 2 Integern zu berechnen ist nun auch nicht so schwer.. Mach dir einfach eine Funktion, beispielsweise "GiveCash", womit du dem Spieler immer das Geld gibst, und in der Funktion wird das Geld immer umberechnet... Variable Cent >= 100 ? 》Euro ++ & Cent - 100

    Hey,
    hier mal ein weiteres System aus meinem Script..


    Beschreibung
    Es handelt sich um ein dynamisches Clansystem. Man kann als RCON-Admin Clans erstellen, die dann von Spielern belegt werden können.
    Die Admins müssen ebenfalls einen Clanleader festlegen, der kann dann wiederum einige Member einladen.
    Beim Erstellen eines Clans muss der Admin den Clannamen und den Clantag festlegen.
    Alle Clans können von allen Spielern per '/clans' angeguckt werden. In der Liste stehen dann die Clan-IDs, der Clanname & der Clantag.
    Ist ein Spieler in einem Clan, wird ihm automatisch hinter dem Namen ein Clantag gesetzt.
    Mehr dazu -> Selber testen!



    Einstellungen im Script
    /* Settings */
    #define MAX_CLANS 50 //Maximale Clans
    #define C_FILE "/Clans.ini" //Wo die Clans gespeichert werden

    #define GetClanID(%0) GetPVarInt(%0,"ClanID")
    #define GetClanRank(%0) GetPVarInt(%0,"ClanRank")
    #define SetClanID(%0,%1) SetPVarInt(%0,"ClanID",%1)
    #define SetClanRank(%0,%1) SetPVarInt(%0,"ClanRank",%1)
    /* Settings */
    Die Funktionen GetClanID / GetClanRank & SetClanID / SetClanRank sind wichtig, denn damit speichert ihr in der Datei des Spielers seinen Clan und den Rank.



    Befehle
    Als Admin
    '/cclan' -> Damit könnt ihr einen Clan erstellen
    '/dclan' -> Damit könnt ihr einen Clan löschen
    '/makecleader' -> Damit könnt ihr jemanden als Leader eines Clans setzen (Clan-ID '0' = Clan-Kick)


    Als Clan-Leader
    '/cinvite' -> Damit kann der Leader einen Spieler in den Clan einladen
    '/cuninvite' -> Damit kann der Leader einen Spieler aus seinem Clan - aus den Clan kicken


    Als Clan-Mitglied / Clan-Leader
    '/c' bzw '/clan' -> Damit können die Clan-Mitglieder und die Clan-Leader mit ihrem Clan kommunizieren.



    Was ihr benötigt
    Ihr benötigt die Include OCMD & Dini.



    Download
    Pastebin
    Direkt



    Hoffe es gefällt euch..
    Hier werden wahrscheinlich auch keine Updates mehr folgen!


    -> Bugs fixed!

    Nein, zeig mal wie du ihn definiert hast, nicht wie du sie anzeigen lässt, denn das haben wir ja schon gesehen, und das ist auch richtig..


    Sprich das wollen wir sehen:
    #define DIALOG_HDASUDH 1
    #define DIALOG_SDJAHSD 2


    bzw


    enum{
    DIALOG_SDHJUSA,
    DIALOG_SHDUSA
    }

    Hey,
    da ich an meinem Selfmade nicht mehr weitermache, habe ich mir gedacht, dass ich einige gute Systeme hier releasen werde, da ich die ja eh nicht benötige.


    Beschreibung
    Es handelt sich um ein dynamisches Gangfightsystem, indem ihr als RCON-Admin - Gangzonen erstellen / löschen könnt.
    Die Zonen werden auf der Map in der Farbe der Fraktion angezeigt, die ihr der Fraktion im Filterscript zugeteilt habt.
    Wenn jemand dann in die Zone reingeht, wird ihm angezeigt, wer der Besitzer der Zone ist ( Fraktionsname - ebenfalls im Filterscript anpassen ), außerdem steht vor dem Fraktionsnamen die Zonenid.
    Die Zonen werden natürlich auch gespeichert, in welcher Datei, das könnt ihr natürlich auch im Filterscript festlegen.
    Wird ein Gangfight gestartet, werden den beiden Gangs die Punkte der beiden Gangs und die Zeit des Gangfightes angezeigt.
    Wann ein Gangfight zu Ende ist, das könnt ihr auch im Filterscript festlegen, ebenfalls, ab wie vielen Punkten er zu Ende ist.
    Die Eroberer können auch die Flagge (versuchen zu) erobern, dafür bekommen sie 3 Punkte. Für jeden Kill, der in der Gangzone passiert, bekommt die jeweilige Gang 1 Punkt.
    Die Besitzer der Zone können während des Gangfightes die Flagge nicht erobern, da es ja ihre ist..
    Wenn die Gang versucht, die Flagge zu erobern, muss sie die angegebene 'Eroberungs-Zeit' in der Nähe der Zone warten, bis sie sie eingenommen hat.
    Um mehr zu erfahren, testet es doch mal aus ;)


    v2 -> Nun wird im Gangfight eine Box angezeigt, wo die Punkte beider Gangs und die Zeit des Gangfights drinsteht.
    Außerdem wird, wenn die Flagge erobert wird, die Zeit angezeigt, wie lange die Flagge noch erobert werden muss.
    Man kann nun mit Y / Z die Flagge erobern.
    Einige / Bekannte Bugs wurden ebenfalls gefixxt!
    Nun sollten keine Bugs mehr vorhanden sein..



    Video

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Link zum Video


    In dem Video sieht man bei der Einnahme eines Gebietes ( bei dem Gangfight, welches ich im Video aufgab ), dass die Zone rot, aber die Schrift grau war..
    Dies habe ich nach dem Video dann gefixxt!


    Leider konnte ich den Gangfight nicht mit einer anderen Person zeigen.. Da ich einfach keine Person mehr hatte :)



    Einstellungen im Script
    /* Settings */
    #define MAX_GZ 40 //Maximale Gangzonen festlegen
    #define MaxPoints 100 //Wie viel Punkte eine Fraktion haben muss, um den Gangfight gewinnen zu können
    #define GFTime 60 //Wie lange ein Gangfight dauert
    #define GFRuhe 30 //Wie lange die Zone nach einem Gangfight nicht mehr angegriffen werden darf
    #define FlaggeZeit 30 //Wie viel Sekunden es dauert, eine Flagge zu erobern
    #define MAX_FRAKTIONEN 21 //Anzahl der Fraktionen festlegen [+1]
    #define G_FILE "/Gangzonen.ini" //Wo die Gangzonen gespeichert werden sollen


    stock bool:NoGang(playerid){
    switch(GetPVarInt(playerid,"Fraktion")){ //PVar anpassen
    case 10,11,12,13:return true; //Gang-IDs anpassen
    default:return false;
    }
    return false;
    }


    stock bool:Leader(playerid){
    switch(GetPVarInt(playerid,"FrakRank")){ //PVar anpassen
    case 7:return true; //Leader-Rank anpassen
    default:return false;
    }
    return false;
    }


    stock GetFraktion(playerid)return GetPVarInt(playerid,"Fraktion");//PVar anpassen


    stock FrakColor(fid){
    new color;
    switch(fid)
    {
    case 0:color = 0x000000FF;
    case 1:color = 0xE10000FF;
    case 2:color = 0x646464FF;
    //...
    default:color = 0xFFFFFFFF;
    }
    return color;
    }


    stock FrakName(fid){
    new name[16];
    switch(fid){
    case 0:name = "No-one";
    case 1:name = "Frak_01";
    case 2:name = "Frak_02";
    //...
    default:name = "Unnamed";
    }
    return name;
    }
    /* Settings */
    Passt dort bitte alles an, damit auch alles wie gewollt funktioniert!



    Befehle
    Als Admin
    '/creategangzone' -> Gangzone erstellen
    '/zoneende' -> Gangzone erstellen - Punkt 2
    '/cflagge' -> Flagge der Gangzone erstellen - Punkt 3 | Ende
    '/destroyzone' -> Zone löschen


    Als Gangmitglied
    '/angriff' -> Zone angreifen
    '/flagge' -> Flagge erobern ( Taste Y / Z )
    '/aufgeben' -> Gangfight aufgeben | Andere Gang erhält die Zone dann



    Was ihr benötigt
    Ihr benötigt die OCMD-Include, die Dini-Include & die M_Zones-Include (Offi-Thread -> Klick).



    Download
    Pastebin
    PWN-Datei



    Weitere Vorschläge / Verbesserungen.. könnte ihr gerne posten :)

    PStar: Danke erstmal ;)


    Ja, wollte das Update eigentlich schon lange rausbringen, jedoch habe ich in letzter Zeit irgendwie keine Lust mehr..


    PS:

    Zitat

    Ein paar kleine Vorschläge:
    1- Vielleicht irgendwie ein Vorschau vor dem Haus im Dialog oder irgendwie so?
    2- Bei /chaus ein Pickup auf die Map setzen mit dem grünen Haus Symbole, welcher wiederum veränder wenn das Haus gekauft wird.
    3- /seelhaus sollte nur an Spieler verkauft werden können.
    4- Jeder sollte nur ein Haus kaufen können.


    1. [Wird im Update dabei sein]
    2. Ist bereits drin
    3. Werde es einbauen! [Wird im Update dabei sein]
    4. {Wird wahrscheinlich im Update dabei sein} >> Jeder will es anders, aber werde eine Definition setzen, und jeder, der will, dass man so viele Häuser haben kann, wie man möchte, kann es "entdefinieren".

    Du hast das Ganze total durcheinander gemacht..


    Machs mal so:
    if(dialogid == DIALOG_LINIEN){
    if(response){
    switch(listitem){
    case 0:{ // LINIE 1 - LS STADTLINIE I
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid, COLOR_GREY, "[LS-PT]: Die Buslinie wird vorbereitet - bitte warte einen Moment.");
    return SetTimerEx("Linie1Timer", 6500, false, "i", playerid);
    }
    case 1:return SendClientMessage(playerid, COLOR_RED, "[LS-PT]: Das Unternehmen hat diese Linie noch nicht freigeschaltet.");
    case 2:return SendClientMessage(playerid, COLOR_RED, "[LS-PT]: Das Unternehmen hat diese Linie noch nicht freigeschaltet.");
    }
    }
    else{
    new veh = GetPlayerVehicleID(playerid);
    SendClientMessage(playerid, COLOR_GREY, "[LS-PT]: Linienauswahl abgebrochen.");
    SetVehicleToRespawn(veh);
    return TogglePlayerControllable(playerid, 1);
    }
    return 1;
    }

    Naja, dann musste das halt jetzt manuell zurücksetzen..


    Du suchst nach "�" und ersetzt es mit einem "ü" ..
    Das dann halt mit allen "verbuggten" Buchstaben.

    Hast du die Include auch in den richtigen Pawno-Ordner -> Includes gepackt?
    Du musst es in den Pawno-Ordner packen, welches Pawno du auch benutzt..


    //Edit: Goldkiller: Naja, mit den Zahlen wärs einfacher, ist mir auch eingefallen, jedoch dachte ich, er wills so haben..

    Du benötigst dafür den Filemanager


    Ungetestet und aus dem Kopf geschrieben ( paar Erklärungen stehen dahinter )
    stock CrewCreate(playerid, name[]){
    new Crewdatei[64];
    for(new crewid=1;crewid<MAX_CREWS;crewid++){
    format(Crewdatei,50,"/Crews/%s.ini",name);
    if(dini_Exists(Crewdatei))return printf("Fehler beim Erstellen der Crew '%s'. Datei existiert bereits!",name);
    dini_Create(Crewdatei);
    //dini_Set(Crewdatei,"Crewname",name); -> Unnötig, da die Datei bereits den Crewnamen beinhaltet
    dini_Set(Crewdatei,"Crewleiter", SpielerName(playerid));
    if(AvailableNR(randnr))dini_IntSet(Crewdatei,"CrewNR", randnr); //Checkt ob die Zahl verfügbar ist ( sehe Funktion unten )
    else //Neue Nummer generieren und abfragen
    return LoadCrew(crewid, name);
    }
    return 1;
    }


    stock LoadCrew(crewid, name[])
    {
    new Crewdatei[64]; format(Crewdatei,50,"/Crews/%s.ini",name);
    if(!fexist(Crewdatei))return 0;
    format(CrewInfo[crewid][Crewname],32,"%s",name);
    format(CrewInfo[crewid][CrewLeader],32,"%s",dini_Get(Crewdatei,"Crewleiter"));
    return CrewInfo[crewid][CrewNR] = dini_Int(Crewdatei,"CrewNR");
    }


    stock AvailableNR(nr){
    new dir:dHandle = dir_open("./scriptfiles/Crews/");
    new item[40], type,datei[20];
    while(dir_list(dHandle, item, type)){
    if(type == FM_FILE){
    format(datei,20,"/Crews/%s",item);
    if(dini_Int(datei,"CrewNR") == nr)return false;
    else return true;
    }
    }
    return dir_close(dHandle);
    }


    PS: Wo wird denn die "randnr" eigentlich erstellt? :o


    //Edit: Sry, etwas vergessen ;)
    //Edit²: Veränderung beim Laden