Beiträge von Quini2

    Gut noch eine frage:


    ist es ressourcend fressend wenn ich die werte beim arbeiten speichere das silo volumen + 100 geht in der ini und beim gmx?


    (E) Error beheben danke goldkiller

    So ich habe es nun erstellt:


    Code
    forward SaveSilo();
    forward LoadSilo();
    forward UpdaSilo();


    public SaveSilo()
    {
    format(string,sizeof(string),"/Daten/Silo.ini");
    if(fexist(string))
    {
    dini_IntSet(string,"Volumen",SiloInfo[Silo]);
    }
    Delete3DTextLabel(Siloa[0]);
    Delete3DTextLabel(Siloa[1]);
    return 1;
    }


    public LoadSilo()
    {
    format(string,sizeof(string),"/Daten/Silo.ini");
    if(!fexist(string))
    {
    dini_Create(string);
    dini_Set(string,"Volumen",SiloInfo[Silo]);
    return 1;
    }
    if(fexist(string))
    {
    SiloInfo[Silo] = dini_Int(string,"Volumen");
    format(string,sizeof(string),"Silo: %d",SiloInfo[Silo]);
    Siloa[0] = Create3DTextLabel(string,Gelb,-53.0389,112.1127,3.1172,20.0,0,1);
    Siloa[1] = Create3DTextLabel(string,Gelb,-63.6561,115.7869,3.1172,20.0,0,1);
    }
    return 1;
    }


    public UpdaSilo()
    {
    format(string,sizeof(string),"Silo: %d",SiloInfo[Silo]);
    Update3DTextLabelText(SiloInfo[Silo],Gelb,string);
    return 1;
    }


    enum Silo
    {
    Volumen
    };
    new SiloInfo[Silo];
    new Text3D:Siloa[2];


    Code
    bei Serverstart: LoadSilo();
    bei Gmx: SaveSilo();
    beim Updaten: SiloInfo[Silo] += 100;
    UpdaSilo();


    doch bekomme errors:


    Code
    :\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(739) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(976) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(989) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(994) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(995) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(1004) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(1005) : error 032: array index out of bounds (variable "SiloInfo")

    Nein ich meinte wie ich es mache das er ein txt dokument erstellt dort reinschreibt
    Füllvolumen=0 so und beim serverstart das lädt und wenn jemand das füll volumen z.b auf 100 stellt
    steht in dem text dokument 100 also soll er beim laden 100 laden und es somit in ein text dokument schreiben
    und wenn in der zeit was neues dazu kommt soll er eben z.b 100 auf 200 machen und das 3d label updaten das die
    neuen werte drinne stehen.


    (E) Ich versuche es nachem essen mal mit dini vlt klappt es ja ;)
    wie mache ich das denn mit dem updaten des 3d labels wenn was neues dazu kommt?

    Ich wollte was machen undzwar ich brauche ein text dokument peer log wie nen kick log z.b dann
    soll er dort reinschreiben Füllvolumen=die werte dann soll er die werte bei serverstart laden und in ein 3d text schreiben
    kann mir jemand sagen wie das so funkioniert mit dem laden aus der datei?


    (E) Und wie ich da dann werte reinschreibe wenn neues füllvolumen zu kommt?
    (E) Gmx zu Serverstart
    (E) Was umformieliert

    Ok Nun Bekomme ich ein Warning in der Ini include:

    C:\Users\Qini\Desktop\Pawno\include\dini.inc(239) : warning 219: local variable "string" shadows a variable at a preceding level
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    wie behebe ich den hier die zeilen:


    Code
    stock DINI_StripNewLine(string[]) {
    	new len = strlen(string);
    	if (string[0]==0) return ;
    	if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
    		string[len - 1] = 0;
    		if (string[0]==0) return ;
    		if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
    	}
    }

    So ich habe jetz mein Login register system auf dini umgebaut da mein anderes probleme mit dem passwort hatte nun
    aber bekomme ich ein paar warnings in diese zeilen:


    Login

    PlayerInfo[playerid][Level] = dini_IntSet(string,"Level");
    PlayerInfo[playerid][Geld] = dini_IntSet(string,"Geld");
    PlayerInfo[playerid][Heal] = dini_Float(string,"Heal");
    PlayerInfo[playerid][Armor] = dini_Float(string,"Armor");
    PlayerInfo[playerid][XKoord] = dini_Float(string,"XKoord");
    PlayerInfo[playerid][YKoord] = dini_Float(string,"YKoord");
    PlayerInfo[playerid][ZKoord] = dini_Float(string,"ZKoord");
    PlayerInfo[playerid][AKoord] = dini_Float(string,"AKoord");
    PlayerInfo[playerid][Neu] = dini_IntSet(string,"Neu");
    PlayerInfo[playerid][Skin] = dini_IntSet(string,"Skin");
    PlayerInfo[playerid][Inte] = dini_IntSet(string,"Inte");
    PlayerInfo[playerid][Virt] = dini_IntSet(string,"Virt");
    PlayerInfo[playerid][Bmkey] = dini_IntSet(string,"Bmkey");
    PlayerInfo[playerid][Bhkey] = dini_IntSet(string,"Bhkey");
    PlayerInfo[playerid][Brief] = dini_IntSet(string,"Brief");
    PlayerInfo[playerid][Keys] = dini_IntSet(string,"Keys");


    Update

    dini_IntSet(string,"Level",PlayerInfo[playerid][Level]);
    dini_IntSet(string,"Geld",PlayerInfo[playerid][Geld]);
    dini_Float(string,"Heal",PlayerInfo[playerid][Heal]);
    dini_Float(string,"Armor",PlayerInfo[playerid][Armor]);
    dini_Float(string,"XKoord",PlayerInfo[playerid][XKoord]);
    dini_Float(string,"YKoord",PlayerInfo[playerid][YKoord]);
    dini_Float(string,"ZKoord",PlayerInfo[playerid][ZKoord]);
    dini_Float(string,"AKoord",PlayerInfo[playerid][AKoord]);
    dini_IntSet(string,"Neu",PlayerInfo[playerid][Neu]);
    dini_IntSet(string,"Skin",PlayerInfo[playerid][Skin]);
    dini_IntSet(string,"Inte",PlayerInfo[playerid][Inte]);
    dini_IntSet(string,"Virt",PlayerInfo[playerid][Virt]);
    dini_IntSet(string,"Bmkey",PlayerInfo[playerid][Bmkey]);
    dini_IntSet(string,"Bhkey",PlayerInfo[playerid][Bhkey]);
    dini_IntSet(string,"Brief",PlayerInfo[playerid][Brief]);
    dini_IntSet(string,"Keys",PlayerInfo[playerid][Keys]);


    Code
    warning 202: number of arguments does not match definition


    (E) ZEilen

    Genau so habe ich es ich frage peer virabel ab ob er eingeloggt ist ich update den spieler nur
    alle 10 minuten und beim disconnecten und disconnecten tuht er nur beim exit oder Gmx
    nun Maxx was soll ich tuhen meine sachen stehen ja alle eine seite vorher?


    (E)


    public OnGameModeExit()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && Eingeloggt[i])
    {
    Delen();
    SpielerUpdate(i);
    Eingeloggt[i] = 0;
    }
    }
    return 1;
    }


    (E) Zeilen Gerückt
    Also so?


    (E) Hat nicht viel gebracht

    Code
    Registriere -> Einloggen -> Gmx -> Disconnecte = Ist es immer noch weg


    siehe zeile oben das passiert eben da löscht er immer diesen beschissene passwort naja
    jemand noch ne idee wenn nicht sagt mir was ich tuhen Soll ;(;(

    Bitte Helft mir >:


    public OnPlayerDisconnect(playerid, reason)
    {
    SpielerUpdate(playerid);
    TextDrawHideForPlayer(playerid,Uhr);
    GetPlayerName(playerid,name,sizeof(name));
    switch(reason)
    {
    case 0: format(string,sizeof(string),"%s hat den Server verlassen, (Timeout)",name);
    case 1: format(string,sizeof(string),"%s hat den Server verlassen, (Ausgeloggt)",name);
    case 2: format(string,sizeof(string),"%s hat den Server verlassen, (Kick/Ban)",name);
    }
    SendClientMessageToAll(Grau,string);
    Eingeloggt[playerid] = 0;
    return 1;
    }


    (E)
    Wenn ihr einfach nix mehr wisst dann sagt mir wenigstens was ich tuhen soll das es geht bzw
    was ich machen soll weil ich habe keine lust aufzugeben wegen ein so nen kleinen sch.. bug..

    So ich habe es mir heute nochmal angeschaut und immer noch das gleiche problem


    Code
    Registriere -> Einloggen -> Disconnecte -> Connecte = Ist es noch da


    Code
    Registriere -> Einloggen -> Gmx = ist es noch da


    Code
    Registriere -> Einloggen -> Gmx -> Disconnecte = Ist es erst weg


    es ist ja das gf login regi system und ich habe mein string ganz oben definiert größe 128 und sie haben bei den publics
    einen neuen string definiert größe 32 ist das nen problem oder kann es daran liegen weil sonst ist alles gleich ?(

    Ich habe mir nun eine eigene funkion erstellt undzwar ein public das, das updatet alle 10 minuten und beim disconnecten doch
    immer wenn ich einen gmx mache springt mein Passwort auf Passwort= ich weiß einfach nicht mehr weiter bzw wieso es ist ja
    so ne art godfather register system nicht copiert sondern nach gebaut und verfeinert doch wieso geht es nicht LoH hat das problem
    z.b auch nicht?!


    public Register(playerid,password[])
    {
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"/Accounts/%s.ini",name);
    new File: hFile = fopen(string, io_write);
    if (hFile)
    {
    strmid(PlayerInfo[playerid][Passwort], password, 0, strlen(password), 255);
    new var[32];
    format(var, 32, "Passwort=%s\n", PlayerInfo[playerid][Passwort]);fwrite(hFile, var);
    format(var, 32, "Level=%d\n", PlayerInfo[playerid][Level]);fwrite(hFile, var);
    format(var, 32, "Geld=%d\n", PlayerInfo[playerid][Geld]);fwrite(hFile, var);
    format(var, 32, "Heal=%.1f\n", PlayerInfo[playerid][Heal]);fwrite(hFile, var);
    format(var, 32, "Armor=%.1f\n", PlayerInfo[playerid][Armor]);fwrite(hFile, var);
    format(var, 32, "XKoord =%.1f\n", PlayerInfo[playerid][XKoord]);fwrite(hFile, var);
    format(var, 32, "YKoord=%.1f\n", PlayerInfo[playerid][YKoord]);fwrite(hFile, var);
    format(var, 32, "ZKoord=%.1f\n", PlayerInfo[playerid][ZKoord]);fwrite(hFile, var);
    format(var, 32, "AKoord=%.1f\n", PlayerInfo[playerid][AKoord]);fwrite(hFile, var);
    format(var, 32, "Neu=%d\n", PlayerInfo[playerid][Neu]);fwrite(hFile, var);
    format(var, 32, "Skin=%d\n", PlayerInfo[playerid][Skin]);fwrite(hFile, var);
    format(var, 32, "Inte=%d\n", PlayerInfo[playerid][Inte]);fwrite(hFile, var);
    format(var, 32, "Virt=%d\n", PlayerInfo[playerid][Virt]);fwrite(hFile, var);
    format(var, 32, "Bmkey=%d\n", PlayerInfo[playerid][Bmkey]);fwrite(hFile, var);
    format(var, 32, "Bhkey=%d\n", PlayerInfo[playerid][Bhkey]);fwrite(hFile, var);
    format(var, 32, "Brief=%d\n", PlayerInfo[playerid][Brief]);fwrite(hFile, var);
    format(var, 32, "Keys=%d\n", PlayerInfo[playerid][Keys]);fwrite(hFile, var);
    fclose(hFile);
    }
    return 1;
    }


    public Login(playerid,password[])
    {
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"/Accounts/%s.ini",name);
    new File: UserFile = fopen(string, io_read);
    if (UserFile)
    {
    new PassData[256],keytmp[256],valtmp[256];
    fread( UserFile,PassData,sizeof(PassData));
    keytmp = ini_GetKey(PassData);
    if( strcmp(keytmp,"Key",true )== 0)
    {
    valtmp = ini_GetValue(PassData);
    strmid(PlayerInfo[playerid][Passwort],valtmp,0,strlen(valtmp)-1, 255);
    }
    if(strcmp(PlayerInfo[playerid][Passwort],password,true)== 0)
    {
    new key[256],val[256],Data[256];
    while(fread(UserFile,Data,sizeof(Data)))
    {
    key = ini_GetKey(Data);
    if(strcmp(key,"Level", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Level] = strval(val); }
    if(strcmp(key,"Geld", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Geld] = strval(val); }
    if(strcmp(key,"Heal", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Heal] = strval(val); }
    if(strcmp(key,"Armor", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Armor] = strval(val); }
    if(strcmp(key,"XKoord", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][XKoord] = strval(val); }
    if(strcmp(key,"YKoord", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][YKoord] = strval(val); }
    if(strcmp(key,"ZKoord", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][ZKoord] = strval(val); }
    if(strcmp(key,"AKoord", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][AKoord] = strval(val); }
    if(strcmp(key,"Neu", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Neu] = strval(val); }
    if(strcmp(key,"Skin", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Skin] = strval(val); }
    if(strcmp(key,"Inte", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Inte] = strval(val); }
    if(strcmp(key,"Virt", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Virt] = strval(val); }
    if(strcmp(key,"Bmkey", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Bmkey] = strval(val); }
    if(strcmp(key,"Bhkey", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Bhkey] = strval(val); }
    if(strcmp(key,"Brief", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Brief] = strval(val); }
    if(strcmp(key,"Keys", true ) == 0 ) { val = ini_GetValue(Data); PlayerInfo[playerid][Keys] = strval(val); }
    }
    fclose(UserFile);
    }
    else
    {
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Einloggen","Das Passwort ist nicht korrekt \nversuchen sie es noch einmal","Einloggen","Abbrechen");
    fclose(UserFile);
    PFalsch[playerid] += 1;
    if(PFalsch[playerid] == 3) { Kick(playerid); SendClientMessage(playerid,Rot,"Sie wurden gekickt: Passwort 3 mal falsch!"); }
    return 1;
    }
    }
    return 1;
    }


    (E) Text
    (E) Text neu geschrieben.
    (E) Register und Login Zugeschrieben
    (E) Nochmal was zugeschrieben bzw geändert

    Habe ich dann sieht meine ini so aus:


    Level= 1
    Geld= 0
    Heal= 100.0
    Armor= 0.0
    XKoord= -54.0
    YKoord= 83.0
    ZKoord= 3.0
    AKoord= 248.0
    Neu= 1
    Skin= 158
    Inte= 0
    Virt= 0
    Bmkey= 0
    Bhkey= 0
    Brief= 0
    Keys= 0


    aber es müsste so


    Passwort= Mein Passwort
    Level= 1
    Geld= 0
    Heal= 100.0
    Armor= 0.0
    XKoord= -54.0
    YKoord= 83.0
    ZKoord= 3.0
    AKoord= 248.0
    Neu= 1
    Skin= 158
    Inte= 0
    Virt= 0
    Bmkey= 0
    Bhkey= 0
    Brief= 0
    Keys= 0

    Dort Löscht er nur Pickups und 3d labels und sowas eben ich habe es in einem extra public gemacht
    damit ongamemodeexit nicht so unsauber bzw unübersichtlich aussieht da es ne wichtige funkion ist
    was denkt ihr wie ichs noch beheben kann es ist nun sehr wichtig für mich und halt bei einem Server
    Restart der manchmal eben sein muss wehre dann immer von den usern das passwort weg aber nur
    bei einem GMX ich habs bis jetz nur peer rcon konsole gemacht liegt es daran oder nicht? nur das
    Porblem muss dringend weg ich bitte drum das mir jemand hilft.


    LG: Qini

    So ich weiß nun worran es liegt bzw wann das passwort gelöscht wird und zwar beim normalen disconnecten bleibt es aber
    bei einem gmx wird es gelöscht so sieht mein OnGameModeExit aus:


    public OnGameModeExit()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    Delen();
    OnPlayerUpdate(i);
    Eingeloggt[i] = 0;
    }
    }
    return 1;
    }


    (E) Text

    Fail? code kopiert ?


    if(strcmp(cmdtext,"/dw",true) == 0)
    {
    if(GetPlayerWeapon(playerid) == 24)
    {
    SetPlayerAmmo(playerid,24,0);
    }
    else
    {
    SendClientMessage(playerid,Deinefarbe,"Du hast keine Deagle!");
    }
    return 1;
    }

    (E) COde

    Er Printet das Passwort aus der ini aber dann löscht er es raus wie sonst auch immer es soll aber da bleiben
    also das passwort soll so bleiben wie es nachem registrieren ist sieht so aus Passwort= Mein Passwort
    aber komischer weise siehts dann immer so aus Passwort= hmm hat noch jemand ne idee wehre sehr wichtig.


    (E) Text umformiliert