Beiträge von Meisternuke

    ich erstelle eine datei mit dini... ich will davon jetzt aber eine sicherheitskopie machen...
    gibts die möglichkeit die datei zu kopieren, ohne jeden wert einzeln auszulesen und erneut in die neue datei zu scheiben?



    //e frage geändert

    also ich habe es so bei /fraktionen:
    #define DIALOG_ADMINCMDS 90
    ^ganz oben


    und dann halt im befehl, bei mir zb für euch /admincmds:


    new ALLECMDS[1024],CMDS1[256],CMDS2[256],CMDS3[256],CMDS4[256],CMDS5[256]; // bei bedarf erhöhen
    format(CMDS1, sizeof(CMDS1), "/testcommand1 /testcommand2 /testcommand3 /testcommand4 \n/testcommand5 /testcommand6 /testcommand7 /testcommand8"); //entspricht 8 commands für 2 zeilen
    format(CMDS2, sizeof(CMDS2), "/testcommand9 /testcommand10 /testcommand11 /testcommand12 \n/testcommand13 /testcommand14 /testcommand15 /testcommand16"); //entspricht 8 commands für 2 zeilen
    format(CMDS3, sizeof(CMDS3), "/testcommand17 /testcommand18 /testcommand19/testcommand20 \n/testcommand21 /testcommand22 /testcommand23 /testcommand24"); //entspricht 8 commands für 2 zeilen
    format(CMDS4, sizeof(CMDS4), "/testcommand25 /testcommand26 /testcommand27 /testcommand28 \n/testcommand29 /testcommand30 /testcommand31 /testcommand32"); //entspricht 8 commands für 2 zeilen
    format(CMDS5, sizeof(CMDS5), "/testcommand33 /testcommand34 /testcommand35 /testcommand36 \n/testcommand37 /testcommand38 /testcommand39 /testcommand40"); //entspricht 8 commands für 2 zeilen
    format(ALLECMDS, sizeof(ALLECMDS), "%s\n%s\n%s\n%s\n%s",CMDS1,CMDS2,CMDS3,CMDS4,CMDS5); //alle strings werden zusammen gefasst, und als "ALLECMDS" formatiert...
    ShowPlayerDialog(playerid,DIALOG_ADMINCMDS,DIALOG_STYLE_MSGBOX,"Admincommands",ALLECMDS,"OK","");//... und hier dann als dialog für den spieler ausgegeben


    ungetestet ... aber sollte so klappen, habs bei mir halt noch mit variablen usw...
    wenns errors gibt, einfach schicken


    funktioniert:


    //e 1 leerzeichen zu viel im script
    //e 2 bild hinzugefügt

    //e anderes problem =D


    es wird irgendwie nichts mehr gespeichert..
    die datei Zeitung.txt ist im scriptfilesordner im ordner Zeitung vorhanden


    was ist am speichern falsch?



    new Zeitungdatei[20];
    if(sscanf(params,"iis",seite,zeile,text))return SendClientMessage(playerid, ROT, "Benutze: /schreiben [Zeitungsseite] [Zeile] [Text]");
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    if(seite==1)
    {
    if(zeile==1)
    {
    format(Zeitungdatei,sizeof(Zeitungdatei),"/Zeitung/Zeitung.txt");
    dini_Set(Zeitungdatei,"Seite1Zeile1",text);
    }

    Weiß einer wie lang der Text bei einem Dialog mit dem Style: DIALOG_STYLE MSGBOX sein darf?


    hab hier was von kye gefunden, aber stimmt das?


    <Kye> 2048 characters but that will probably be increased



    Frage nr2:
    Wie oft kann ich \n machen?
    irgendwann ist der dialog ja dann nicht mehr im bild, gibts da auch ein limit? also max zeilenanzahl?

    also das script das du mir gesendet hast müsste so gehen...
    bei oplayerdeath wird ja


    SetPVarInt(playerid,"Tode",GetPVarInt(playerid, "Tode")+1);
    SetPVarInt(killerid,"Kills",GetPVarInt(killerid, "Kills")+1);


    um 1 erhöht...
    hab dir mal noch was eingefügt, ersetzt das nochmal:
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new string[128];
    format(string,sizeof(string),"Du Hast %s Gekillt HGW!",SpielerName(playerid));
    SendClientMessage(killerid,ROT,string);
    format(string,sizeof(string),"Du wurdest von %s Gekillt!",SpielerName(killerid));
    SendClientMessage(playerid,ROT,string);
    GameTextForPlayer(playerid,"~w~-> ~r~ToT ~w~<-",1000,3);
    GameTextForPlayer(killerid,"~w~-> Kill <-",1000,3);
    SetPlayerScore(killerid,(GetPlayerScore(killerid)+1));
    if(killerid == INVALID_PLAYER_ID){
    SetPVarInt(playerid,"Tode",GetPVarInt(playerid, "Tode")+1);
    Todeupdate(playerid);
    }
    else
    {
    SetPVarInt(playerid,"Tode",GetPVarInt(playerid, "Tode")+1);
    Todeupdate(playerid);
    SetPVarInt(killerid,"Kills",GetPVarInt(killerid, "Kills")+1);
    Killupdate(killerid);
    SpielerSpeichern(playerid);
    SpielerSpeichern(killerid);
    }


    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    new string[128];
    format(string,sizeof(string),"Du Hast %s Gekillt HGW!",SpielerName(playerid));
    SendClientMessage(killerid,ROT,string);
    format(string,sizeof(string),"Du wurdest von %s Gekillt!",SpielerName(killerid));
    SendClientMessage(playerid,ROT,string);
    GameTextForPlayer(playerid,"~w~-> ~r~ToT ~w~<-",1000,3);
    GameTextForPlayer(killerid,"~w~-> Kill <-",1000,3);
    SetPlayerScore(killerid,(GetPlayerScore(killerid)+1));
    if(killerid == INVALID_PLAYER_ID){
    SetPVarInt(playerid,"Tode",GetPVarInt(playerid, "Tode")+1);
    Todeupdate(playerid);
    }
    else
    {
    SetPVarInt(playerid,"Tode",GetPVarInt(playerid, "Tode")+1);
    Todeupdate(playerid);
    SetPVarInt(killerid,"Kills",GetPVarInt(killerid, "Kills")+1);
    Killupdate(killerid);
    }

    return 1;
    }



    habs für dich gemacht

    wenn du das so machst, ändert sich das textdraw für jeden spieler, also angenommen ich sterbe wird dein textdraw auch geändert, ich machs mal für dich:


    irgendwo über ongamemodeinit:

    new Text:Killtextdraw[MAX_PLAYERS];
    new Text:Todetextdraw[MAX_PLAYERS];


    unter onplayerconnect:

    Killtextdraw[playerid] = TextDrawCreate(0.000000,437.000000,"[Kills: 50 ]");
    TextDrawAlignment(Killtextdraw[playerid],0);
    TextDrawBackgroundColor(Killtextdraw[playerid],0x000000ff);
    TextDrawFont(Killtextdraw[playerid],3);
    TextDrawLetterSize(Killtextdraw[playerid],0.499999,1.000000);
    TextDrawColor(Killtextdraw[playerid],0xffffffff);
    TextDrawSetOutline(Killtextdraw[playerid],1);
    TextDrawSetProportional(Killtextdraw[playerid],1);
    TextDrawSetShadow(Killtextdraw[playerid],1);


    Todetextdraw[playerid] = TextDrawCreate(528.000000,436.000000,"[Tode: 50 ]");
    TextDrawAlignment(Todetextdraw[playerid],0);
    TextDrawBackgroundColor(Todetextdraw[playerid],0x000000ff);
    TextDrawFont(Todetextdraw[playerid],3);
    TextDrawLetterSize(Todetextdraw[playerid],0.499999,1.100000);
    TextDrawColor(Todetextdraw[playerid],0xffffffff);
    TextDrawSetOutline(Todetextdraw[playerid],1);
    TextDrawSetProportional(Todetextdraw[playerid],1);
    TextDrawSetShadow(Todetextdraw[playerid],1);


    bei onplayerdisconnect:

    TextDrawDestroy(Killtextdraw[playerid]);
    TextDrawDestroy(Todetextdraw[playerid]);


    unter onplayerspawn:

    TextDrawShowForPlayer(playerid, Killtextdraw[playerid]);
    TextDrawShowForPlayer(playerid, Todetextdraw[playerid]);


    damit wird aufjeden fall schon mal das textdraw erstellt...
    jetzt gehts ans updaten, dafür benutze ich zb. immer eine funktion


    Wir nennen die funktionen mal Killupdate und Todeupdate...


    stock Killupdate(playerid)
    {
    new killud[40];
    format(killud, sizeof(killud), "[Kills: %d ]",GetPVarInt(playerid, "Kills"));//hier halt mir deinem erstetzen.. also GetPVarInt
    TextDrawSetString(Killtextdraw[playerid], killud);
    }
    stock Todeupdate(playerid)
    {
    new todeud[40];
    format(todeud, sizeof(todeud), "[Tode: %d ]",GetPVarInt(playerid, "Tode"));//hier halt mir deinem erstetzen.. also GetPVarInt
    TextDrawSetString(Todetextdraw[playerid], todeud);
    }



    Jetzt wird das textdraw überall geupdatet wenn du:
    Killupdate(playerid);
    bzw.
    Todeupdate(playerid);
    einfügst.


    logisch wäre es aber bei Onplayerdeath:
    Killupdate(killerid); //dem killer wird das textdraw für kills geupdatet
    und
    Todeupdate(playerid); //wenn ich selber sterb, wird das textdraw für tode geupdatet



    aber bitte erst nachdem du den wert erhöht hast, also
    SetPVarInt(playerid,"Tode",GetPVarInt(playerid,"Tode")+1);
    SetPVarInt(playerid,"Kills",GetPVarInt(playerid,"Kills")+1);
    und dann erst
    Killupdate(killerid);
    Todeupdate(playerid);



    ist ungetestet, aber sollte gehen...
    wegen dem textdraw2, also der adresse, einfach so lassen also bei ongamemodeinit
    nur halt bei ongamemodeexit:
    TextDrawHideForAll(textdraw2);
    TextDrawDestroy(textdraw2);


    und bei onplayerconnect:
    TextDrawShowForPlayer(playerid, textdraw2);



    wenns was gibt melde dich


    mfg

    [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.
    [/video]
    http://www.youtube.com/watch?v=n3rf3-f5FfI&feature=youtu.be


    hab mal kurz n kleines vid gemacht, für die die nicht wissen was ich mein...


    naja schade, das man da nix machen kann

    Ihr kennt ja alle den "Bug", das wenn man z.B. eine Deagle auf 1 Schuss runterballert, dann auf faust oder eine andere Waffe wechselt, man dann wieder zurück wechselt, man wieder bei der Deagle volle Munition hat, geht ja bei jeder Waffe.
    Gibts es da die möglichkeit, das zu verhindern?
    Also ich wechsle Waffe mit 3 Schuss, wechsle zurück, hab immernoch 3 Schuss.


    Glaube Trooper hatte da mal was, kann aber nichts mehr finden.

    Zitat

    jap mehr informationen wären gut , und ne persönliche frage warum nich F.Informatiker für Anwendungsentwicklung wäre doch als Scripter besser


    hab ich mir auch überlegt...


    aber systemintegration lernt soweit ich jetzt mitbekommen habe auch programmieren usw...
    vllt kann er einfach besser am pc rumschrauben

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(strcmp(Spielername(i),"Meisternuke", true) == 0)
    {
    SendClientMessage(playerid,BLAU,"Projektleiter und Vorstand: {00FF00}Meisternuke");
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Projektleiter und Vorstand: {FF0000}Meisternuke");
    }
    if(strcmp(Spielername(i),"TomBo", true) == 0)
    {
    SendClientMessage(playerid,BLAU,"Vorstand: {00FF00}TomBo");
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Vorstand: {FF0000}TomBo");
    }
    if(strcmp(Spielername(i),"Mysterion", true) == 0)
    {
    SendClientMessage(playerid,BLAU,"Vorstand: {00FF00}Mysterion");
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Vorstand: {FF0000}Mysterion");
    }
    SendClientMessage(playerid,BLAU,"HeadAdmin: {FF0000}- ");
    if(strcmp(Spielername(i),"Phil", true) == 0)
    {
    SendClientMessage(playerid,BLAU,"Superadmin: {00FF00}Phil");
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Superadmin: {FF0000}Phil");
    }
    if(strcmp(Spielername(i),"Studtie", true) == 0)
    {
    SendClientMessage(playerid,BLAU,"Admin: {00FF00}Studtie");
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Admin: {FF0000}Studtie");
    }
    SendClientMessage(playerid,BLAU,"TestAdmin: {FF0000}- ");
    SendClientMessage(playerid,BLAU,"++++++++++++++++++++++++++++++++++++");
    return 1;
    }



    hab hier meinen /admins befehl
    es sollen die namen in grün angezeigt werden, wenn der admin online ist, sonst grün...
    die farben und so stimmen schonmal
    jetzt ist es so...
    ich "Meisternuke" tippe /admins ein...
    wenn jetzt phil online ist, wird er grün angezeigt... ich selber werde aber rot angezeigt...


    wenn jetzt noch Studtie oder so online ist, wird dieser auch rot angezeigt, also es wird gerade nur 1 admin grün angezeigt


    //e woran kann das liegen

    hab hier meinen giveweapon befehl...


    ocmd:giveweapon(playerid, params[])
    {
    if(!Admin(playerid,4))return SendClientMessage(playerid,ROT,"Du bist kein Admin [4]");
    new pID, wID, ammo, string[128];
    if(sscanf(params,"udd",pID,wID,ammo)) return SendClientMessage(playerid,0xFFF000FF,"Benutzung:/giveweapon [ID] [Waffe] [Munition]");
    if(pID == INVALID_PLAYER_ID)return SendClientMessage(playerid,ROT,"Spieler nicht gefunden");
    GivePlayerWeapon(pID, wID, ammo);
    format(string,sizeof(string),"Du hast %s die Waffe %i mit %i Munition gegeben!",Spielername(pID),wID,ammo);
    SendClientMessage(playerid, BLAU, string);
    format(string,sizeof(string),"Du hast von %s die Waffe %i mit %i Munition bekommen!",Spielername(playerid),wID,ammo);
    SendClientMessage(pID, BLAU, string);
    format(string, sizeof(string),"[%s hat %s die Waffe %i mit %i Munition gegeben!]",Spielername(playerid), Spielername(pID),wID,ammo);
    SendAdminMessage(PINK, string);
    return 1;
    }



    nur wird ja jetzt die munition drauf gegeben.
    also wenn der spieler 400 deagleschuss hat, ich dann ihm nochmal per befehl 400 gebe, dann hat er 800...
    wie mache ich, das abgefragt wird ob der spieler noch miunition in der waffe hat...
    also spieler hat 400 munition, ich mache den befehl, returned message, hat noch munition