Beiträge von MarlboroMann

    Ok alles klar.
    Sorry das ich so nerv :S


    Gebiete speichern aber immer noch nicht..
    codes:
    Stock Laden und Speichern

    Spoiler anzeigen
    stock GebieteLaden()
    {
    new str[32];
    for(new i=0; i<sizeof(Gebiete); i++)
    {
    format(str, sizeof(str), "BesitzerGF%d", i);
    Gebiete[i][GFBesitzer] = dini_Int("/GebietDatei/GebietDatei.ini",str);
    }
    return 1;
    }

    Spoiler anzeigen
    stock GebieteSpeichern()
    {
    new str[32];
    for(new i=0; i<sizeof(Gebiete); i++)
    {
    format(str, sizeof(str), "BesitzerGF%d", i);
    dini_IntSet("/GebietDatei/GebietDatei.ini",str,Gebiete[i][GFBesitzer]);
    }
    return 1;
    }


    OnGameModExit

    Spoiler anzeigen
    public OnGameModeExit()
    {
    GebieteSpeichern();
    return 1;
    }


    OnGameModInit

    Spoiler anzeigen
    public OnGameModInit()
    {
    GebieteLaden();
    return 1;
    }


    ocmd:gmx

    Spoiler anzeigen
    ocmd:gmx(playerid,params)
    {
    if(GetPVarInt(playerid,"Admin")==5)
    {
    GebieteSpeichern();
    SpielerSpeichern(playerid);
    SendRconCommand("gmx");
    }
    return 1;
    }


    Bild der erstellten Datei:

    Okay das habe ich noch nicht gemacht.


    Nur mal so eine Frage für die Verständnis:
    Bsp beim Speicher Stock der Gebiete:
    format(str, sizeof(str), "BesitzerGF%d", i);
    dini_IntSet("/GebietDatei/GebietDatei.ini",str,Gebiete[i][GFBesitzer]);


    Beim Speicher Stock der Accounts:
    format(Accounts,sizeof(Accounts),"/AccountsOLD/%s.ini",SpielerName(playerid));
    dini_IntSet(Accounts,"Score",GetPlayerScore(playerid));


    Hast du den Unterschied gesehen?
    Beim Account habe ich den Pfad bei der Zeile mit format.
    Beim GangFight habe den Pfad bei der Zeile mit dini_IntSet.


    Ist das normal?

    So :),


    habe es so gemacht wie du es mir hier geschrieben hast.
    Habe das Gebiet angegriffen und der Besitzer hat sich geändert.
    Habe darauf hin dann ein GMX gemacht, jedoch ist wenn der Server wieder online ist der Besitzer wieder 0.
    Habe dann in die ini Datei geguckt die ich erstellt habe in dem Pfad den du bei den Stocks angegeben hast, dieser ist jedoch
    komplett leer..


    Muss ich nicht noch wie bei meinen Account so eine Art Register Stock machen?
    Das heißt wo ich die Datei erst erstellen lasse?

    Okay Jeffry der Meister hat geantwortet, nun kann es nur Bug Frei werden :D



    Habe die Koordinaten nun geändert, jetzt habe ich aber noch ein Problem.
    Und zwar haben die Gebiete nun keine Besitzer und ich kann sie auch nicht ändern weil ich nicht weiß wie ich die Besitzer speichern lassen kann..

    Danke erstmal das mir noch jemand helfen will, jedoch ist dein gesendeter Code der selbe wie ich ihn schon benutze..


    Kennt sich hier echt niemand mit GangFight Systemen aus?
    Würde mich wundern, da es ja in fast jedem Script drin ist :S

    @FerienFreak
    jo, ist mir nicht aufgefallen, wollte es erst nur den jeweiligen Fraktionen schicken, habe mir aber dann gedacht,neeeee und die Schleife ausversehen drin gelassen.
    Danke :D



    Die Abfrage habe ich nun geändern, keine Veränderung.


    Mein Enum:
    enum gebiet
    {
    GFBesitzer,
    Float:MinX,
    Float:MinY,
    Float:MaxX,
    Float:MaxY,
    gOn,
    GFAngreifer,
    ScoreBesitzer,
    ScoreAngreifer
    };


    Die Funktion:
    stock IsPlayerInGebiet(playerid)
    {
    for(new i;i<sizeof(Gebiete);i++)
    {
    new Float:GetX,Float:GetY,Float:GetZ;
    GetPlayerPos(playerid,GetX,GetY,GetZ);
    //if(Gebiete[i][MinX] < GetX && Gebiete[i][MaxX] > GetX && Gebiete[i][MinY] < GetY && Gebiete[i][MaxY] > GetY)
    if(GetX >= Gebiete[i][MinX] && GetX <= Gebiete[i][MaxX] && GetY >= Gebiete[i][MinY] && GetY <= Gebiete[i][MaxY])
    {
    return i;
    }
    }
    return -1;
    }


    Anwendung der Funktion bei OnPlayerDeath

    Spoiler anzeigen
    if(IsPlayerInGebiet(playerid) > -1)
    {
    new kill1[100],kill2[100];
    new zone = IsPlayerInGebiet(playerid);
    if(Gebiete[zone][gOn] == 1)
    {
    if(GetPVarInt(playerid,"Fraktion")==Gebiete[zone][GFBesitzer])
    {
    if(GetPVarInt(killerid,"Fraktion")==Gebiete[zone][GFAngreifer])
    {
    Gebiete[zone][GFAngreifer] ++;
    format(kill1,sizeof(kill1),"%s hat %s im GangFight getötet.",SpielerName(killerid),SpielerName(playerid));
    SendClientMessageToAll(tuerkis,kill1);
    }
    }
    if(GetPVarInt(playerid,"Fraktion")==Gebiete[zone][GFAngreifer])
    {
    if(GetPVarInt(killerid,"Fraktion")==Gebiete[zone][GFBesitzer])
    {
    Gebiete[zone][GFBesitzer] ++;
    format(kill2,sizeof(kill2),"%s hat %s im GangFight getötet.",SpielerName(killerid),SpielerName(playerid));
    SendClientMessageToAll(tuerkis,kill2);
    }
    }
    }
    }

    Hey,
    ich habe eben ein mit einem Tutorial ein GF System geschrieben aber die Abfrage ob der Spieler in einem GangFight ist funktioniert nicht.
    Egal wo ich bin ich bekomme immer die Nachricht du bist nicht im GangFight Gebiet.
    Habe es bei allen 5 probiert..


    Stock
    stock IsPlayerInGebiet(playerid)
    {
    for(new i;i<sizeof(Gebiete);i++)
    {
    new Float:GetX,Float:GetY,Float:GetZ;
    GetPlayerPos(playerid,GetX,GetY,GetZ);
    if(Gebiete[i][MinX] < GetX && Gebiete[i][MaxX] > GetX && Gebiete[i][MinY] < GetY && Gebiete[i][MaxY] > GetY)
    {
    return i;
    }
    return -1;
    }
    return -1;
    }


    Ocmd:
    ocmd:gangfight(playerid,params[])
    {
    if(GetPVarInt(playerid,"Fraktion")==2 || GetPVarInt(playerid,"Fraktion")==3)
    {
    if(GetPVarInt(playerid,"FrakRang")>4)
    {
    if(IsPlayerInGebiet(playerid) > -1)
    {
    new zone = IsPlayerInGebiet(playerid);
    if(Gebiete[zone][gOn] == 1) return SendClientMessage(playerid,rot,"Das Gebiet wird gerade schon angegriffen.");
    if(Gebiete[zone][GFBesitzer] == GetPVarInt(playerid,"Fraktion"))return SendClientMessage(playerid,rot,"....);
    Gebiete[zone][GFAngreifer] = GetPVarInt(playerid,"Fraktion");
    Gebiete[zone][gOn] = 1;
    SetTimerEx("GangFight",10000,0,"i",zone);
    for(new i; i<MAX_PLAYERS; i++)
    {
    SendClientMessage(i,tuerkis,"Es wurde ein GangFight gestartet.");
    SendClientMessage(i,tuerkis,"Haltet euch bitte fern, wenn ihr damit nichts zutun habt.");
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Du bist in keinem GangFight Gebiet.");
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Dein Rang ist zu niedrig um ein GangFight zu starten.");
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Deine Fraktion ist keine Gang.");
    }
    return 1;
    }


    Gebiete:
    new Gebiet[5];
    new Gebiete[5][gebiet] = {
    {GFBesitzer,-729.0828,2784.1543,-897.4752,2731.4478},
    {GFBesitzer,-1266.7142,2561.9902,-1337.7583,2440.3684},
    {GFBesitzer,-617.7786,1422.2673,-885.5745,1621.0100},
    {GFBesitzer,109.6944,1485.1274,289.1925,1335.6724},
    {GFBesitzer,487.0500,2651.3181,63.0710,2386.9675}
    };

    Danke dir Jeffry,


    ich werd es mal versuchen.
    Habe nur noch die Frage wenn ich strval(inputtext) Abfrage, sorgt dies auch dafür das man nur Zahlen eingeben kann?
    Also das Buchstaben einfach nicht akzeptiert werden?

    Heyyo,


    habe eine SaveBox versucht zuscripten und da soll man bei dem Befehl /savebox ein Dialog bekommen, wo man auswählen kann was man lagern bzw rausnehmen kann. Und danach wenn man dies ausgewählt hat soll ein InPut Dialog kommen.
    Soweit funktioniert das auch jedoch wenn ich dort was eingeben schließt der Dialog einfach ohne irgendwas zu machen.


    Befehl:
    ocmd:savebox(playerid,params)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,-348.20001, 2771.3999, 91.4) | IsPlayerInRangeOfPoint(playerid,5,-1316.1, 2319.5, 128.60001))
    {
    ShowPlayerDialog(playerid,DIALOG_SAVEBOX1,DIALOG_STYLE_LIST,"Was willst du reinlegen/rauslegen?","Drogen","Weiter","Abbrechen");
    }
    return 1;
    }


    Dialoge:
    if(dialogid==DIALOG_SAVEBOX1)
    {
    if(response==0)
    {
    }
    if(response==1)
    {
    if(listitem==0)
    {
    new string1[200];
    format(string1,sizeof(string1),"Du hast %i Drogen dabei und %i in der SaveBox.",GetPVarInt(playerid,"Drogen"),GetPVarInt(playerid,"SBDrogen"));
    ShowPlayerDialog(playerid,DIALOG_SAVEBOX2,DIALOG_STYLE_INPUT,"Wie viele Drogen willst du reinlegen?",string1,"Reinlegen","Rausnehmen");
    }
    }
    }
    if(dialogid==DIALOG_SAVEBOX2)
    {
    if(response==0)//Rausnehmen
    {
    if(inputtext[10]<1)
    {
    }
    else
    {
    if(GetPVarInt(playerid,"SBDrogen")>=inputtext[10])
    {
    new string1[200];
    SetPVarInt(playerid,"SBDrogen",GetPVarInt(playerid,"SBDrogen")-inputtext[0]);
    SetPVarInt(playerid,"Drogen",GetPVarInt(playerid,"Drogen")+inputtext[0]);
    format(string1,sizeof(string1),"Du hast %i Drogen aus der SaveBox genommen.",inputtext[0]);
    SendClientMessage(playerid,gruen,string1);
    }
    }
    }
    if(response==1)//Reinlegen
    {
    if(inputtext[10]<1)
    {
    }
    else
    {
    if(GetPVarInt(playerid,"Drogen")>=inputtext[10])
    {
    new string2[200];
    SetPVarInt(playerid,"SBDrogen",GetPVarInt(playerid,"SBDrogen")+inputtext[0]);
    SetPVarInt(playerid,"Drogen",GetPVarInt(playerid,"Drogen")-inputtext[0]);
    format(string2,sizeof(string2),"Du hast %i Drogen in die SaveBox gelegt..",inputtext[0]);
    SendClientMessage(playerid,gruen,string2);
    }
    }
    }
    }

    Sorry das ich nach Jahren nochmal hier was frage....
    Ich suche aber nur die Objekt ID von der SaveBox...
    Ich finde sie nämlich nicht in deinen Zeilen, kann sein das ich blind bin..:S

    Jo,


    habe mein /makeadmin Befehl kopiert umgeschrieben für /makeleader und nun bekomme ich immer wenn ich InGame /makeleader eingeben die Nachricht, das Es nur Fraktionen zwichen ID 1 und 3 gibt....
    Auch wenn ich Parameter weglasse...



    Der Admin Befehl(der funktioniert)

    Spoiler anzeigen
    ocmd:makeadmin(playerid,params[])
    {
    new string1[200],string2[200],string3[200],pID,rang;
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,rot,"Diese Spieler ID ist zur Zeit nicht vergeben.");
    if(rang < 0 || rang > 5) return SendClientMessage(playerid,rot,"Es gibt nur Admin Ränge von 0 bis 5.");
    if(GetPVarInt(playerid,"Admin")>=4)
    {
    if(sscanf(params,"ii",pID, rang))return SendClientMessage(playerid,weiss,"{A15400}[Benutze]: {FEFEFF}/makeadmin [ID] [Rang]");
    format(string1,sizeof(string1),"%s hat dir Admin Rang %i gegeben. Nutze deine Rechte nicht aus!",SpielerName(playerid),rang);
    SendClientMessage(pID,gruen,string1);
    format(string2,sizeof(string2),"Du hast %s den Admin Rang %i gegbeen.",SpielerName(pID),rang);
    SendClientMessage(playerid,gruen,string2);
    format(string3,sizeof(string3),"[ADM]: %s hat %s den Admin Rang %i gegeben.",SpielerName(playerid),SpielerName(pID),rang);
    SendClientMessageToAll(gruen,string3);
    SetPVarInt(pID,"Admin",rang);
    }
    else
    {
    SendClientMessage(playerid,rot,"Du hast nicht den benötigten Admin Rang.");
    }
    return 1;
    }



    Der verbuggte /makeleader Befehl

    Spoiler anzeigen
    ocmd:makeleader(playerid,params[])
    {
    new string1[200],string2[200],pID,frak;
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,rot,"Diese Spieler ID ist zur Zeit nicht vergeben.");
    if(frak < 1 || frak > 4) return SendClientMessage(playerid,rot,"Es gibt nur Fraktions Ränge von 1 bis 3");
    if(GetPVarInt(playerid,"Admin")>=4)
    {
    if(sscanf(params,"ii",pID, frak))return SendClientMessage(playerid,weiss,"{A15400}[Benutze]: {FEFEFF}/makeleader [ID] [Fraktion]");
    format(string1,sizeof(string1),"%s hat dir Leader Rechte von der Fraktion %s gegeben. Nutze deine Rechte nicht aus!",SpielerName(playerid),FrakName(pID));
    SendClientMessage(pID,gruen,string1);
    format(string2,sizeof(string2),"Du hast %s Leader Rechte von der Fraktion %s gegbeen.",SpielerName(pID),FrakName(pID));
    SendClientMessage(playerid,gruen,string2);
    SetPVarInt(pID,"Fraktion",frak);
    }
    else
    {
    SendClientMessage(playerid,rot,"Du hast nicht den benötigten Admin Rang.");
    }
    return 1;
    }





    Okay habe es gefunden und zwar habe ich


    if(frak < 1 || frak > 4) return SendClientMessage(playerid,rot,"Es gibt nur Fraktions Ränge von 1 bis 3");
    zu
    if(frak < 0 || frak > 5) return SendClientMessage(playerid,rot,"Es gibt nur Fraktions Ränge von 1 bis 3");
    geändert



    aber wieso geht das nun`?

    Hallo,


    wollte mein Script ein paar Freunden zeigen und da ist mir aufgefallen, dass vieles gar nicht bei anderen ID´s als 0 klappt.


    Bsp.
    Ich lasse Skins wenn man sich registriert setzen aber die anderen Spawnen mit einem CJ Skin.


    Bei mir hat immer alles geklappt habe alles getestet jedoch immer alleine.
    Kann es sein das ich irgendwas noch im Script definieren muss das es bei den anderen IDS auch funktioniert?

    Jeffry....
    ich glaube du kannst in die Zukunft sehen <3



    Habe mir dabei gedacht: Hm dann setzt doch einfach mal bei jedem Befehl hinter params ein []...
    Nunja ich glaube du weißt was dann passiert.... ein derber Runtime Error.



    Da du es mir aber so geil erklärt hast, weiß ich was ich da gemacht habe und habe es wieder weggemacht und nun klappt wieder alles...
    Danke :)