Beiträge von Growen

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums

    Ich denke mal du weist wie man dini benutzt oder ?
    wenn ja:


    Speichere die koordinaten vom Fahrzeug in Variabeln
    new
    Float:vx,
    Float:vy,
    Float:vz,
    Float:va;
    GetVehiclePos(vehicleid, vx, vy, vz);
    GetVehicleZAngle(vehicleid, va);


    und Speichere diese Daten in deiner Datei ab
    dini_FloatSet(...,"x",vx);
    dini_FloatSet(...,"y",vy);
    dini_FloatSet(...,"z",vz);
    dini_FloatSet(...,"a",va);

    Hier die Enum Struktur:
    enum Auto
    {
    model,
    farbe1,
    farbe2,
    Float:carx,
    Float:cary,
    Float:carz,
    Float:cara,
    car_besitzer[32],
    car_key1[32],
    car_key2[32],
    car_key3[32],
    car_preis,
    ID,
    motorschaden,
    Tankinhalt,
    PaintJob,
    Nos,
    Hyd,
    Vents,
    Lamps,
    Wheels,
    Hood,
    Roof,
    Auspuff,
    Spoiler,
    StossR,
    StossF,
    SideR,
    SideL,
    Nummernschild

    }
    new CarInfo[MAX_VEHICLES][Auto];


    Speichern
    CMD:
    ocmd:ccreate(playerid,params[])
    {
    new Float:x,
    Float:y,
    Float:z,
    Float:a,
    fahrzeug,
    kostet;
    if(sscanf(params, "dd",fahrzeug,kostet))
    {
    return SendClientMessage(playerid,gelb2,"Benutze: /erstellen [MODEL] [PREIS]");
    }
    else if (kostet < 0)
    {
    return SendClientMessage(playerid,rot,"Fahrzeug zu billig !");
    }
    else if (kostet > 450000)
    {
    return SendClientMessage(playerid,rot,"Fahrzeug zu teuer !");
    }
    else if (fahrzeug > 611)
    {
    return SendClientMessage(playerid,rot,"Ungültige ID !");
    }
    else if (fahrzeug < 400)
    {
    return SendClientMessage(playerid,rot,"Ungültige ID !");
    }
    else if(Spieler[playerid][AdminLevel] > 1)
    {
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,a);
    new idx = CreateVehicle(fahrzeug, x,y,z+1.5,a,random(30),random(30),-1);
    CarInfo[idx][ID] = idx;
    CarInfo[idx][carx] = x;
    CarInfo[idx][cary] = y;
    CarInfo[idx][carz] = z;
    CarInfo[idx][cara] = a;
    CarInfo[idx][model] = fahrzeug;
    CarInfo[idx][farbe1] = random(30);
    CarInfo[idx][farbe2] = random(30);
    CarInfo[idx][car_preis] = kostet;
    SpeicherFahrzeug(idx);
    LadeFahrzeug(idx);
    SendClientMessage(playerid,gruen,"Fahrzeug erfolgreich erstellt !");
    PutPlayerInVehicle(playerid, idx, 0);
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    log(name,"Befehl: ccreate");
    }
    return 1;
    }


    Speichern an sich:
    public SpeicherFahrzeug(carid)
    {
    if(carid <= 0)
    {
    return 1;
    }
    CarInfo[carid][model] = GetVehicleModel(carid);
    new str[25];
    format(str, sizeof(str), "Autos/Car_%d.nec", carid);
    dini_Create(str);
    {
    dini_IntSet(str,"ID",CarInfo[carid][ID]);
    dini_IntSet(str,"Model",CarInfo[carid][model]);
    dini_IntSet(str,"Farbe1",CarInfo[carid][farbe1]);
    dini_IntSet(str,"Farbe2",CarInfo[carid][farbe2]);
    dini_FloatSet(str,"x",CarInfo[carid][carx]);
    dini_FloatSet(str,"y",CarInfo[carid][cary]);
    dini_FloatSet(str,"z",CarInfo[carid][carz]);
    dini_FloatSet(str,"a",CarInfo[carid][cara]);
    dini_IntSet(str,"Preis",CarInfo[carid][car_preis]);
    dini_Set(str,"Besitzer","Keiner");
    dini_Set(str,"Key1","Keiner");
    dini_Set(str,"Key2","Keiner");
    dini_Set(str,"Key3","Keiner");
    dini_IntSet(str,"Motorschaden",0);
    dini_IntSet(str,"Tankinhalt",100);
    dini_IntSet(str,"Lackierung",0);
    dini_IntSet(str,"Nitro",0);
    dini_IntSet(str,"Hydraulik",0);
    dini_IntSet(str,"Vents",0);
    dini_IntSet(str,"Lamps",0);
    dini_IntSet(str,"Wheels",0);
    dini_IntSet(str,"Hood",0);
    dini_IntSet(str,"Roof",0);
    dini_IntSet(str,"Auspuff",0);
    dini_IntSet(str,"Spoiler",0);
    dini_IntSet(str,"StossR",0);
    dini_IntSet(str,"StossF",0);
    dini_IntSet(str,"SideR",0);
    dini_IntSet(str,"SideL",0);
    dini_Set(str,"Nummernschild","Classic");
    return LadeFahrzeug(carid);
    }
    }


    Laden der Fahrzeuge:
    public LadeFahrzeug(carid)
    {
    new str[25],nummer[9];
    format(str, sizeof(str), "Autos/Car_%d.nec", carid);
    if(carid == 0)
    {
    return 1;
    }
    if(fexist(str))
    {
    CarInfo[carid][ID] = dini_Int(str,"ID");
    CarInfo[carid][model] = dini_Int(str,"Model");
    CarInfo[carid][farbe1] = dini_Int(str,"Farbe1");
    CarInfo[carid][farbe2] = dini_Int(str,"Farbe2");
    CarInfo[carid][carx] = dini_Float(str,"x"); // hier laden wir die Werte
    CarInfo[carid][cary] = dini_Float(str,"y");
    CarInfo[carid][carz] = dini_Float(str,"z");
    CarInfo[carid][cara] = dini_Float(str,"a");
    CarInfo[carid][car_preis] = dini_Int(str,"Preis");
    format(CarInfo[carid][car_besitzer],32,"%s",dini_Get(str,"Besitzer"));
    format(CarInfo[carid][car_key1],32,"%s",dini_Get(str,"Key1"));
    format(CarInfo[carid][car_key2],32,"%s",dini_Get(str,"Key2"));
    format(CarInfo[carid][car_key3],32,"%s",dini_Get(str,"Key3"));
    CarInfo[carid][motorschaden] = dini_Int(str,"Motorschaden");
    CarInfo[carid][Tankinhalt] = dini_Int(str,"Tankinhalt");
    CarInfo[carid][PaintJob] = dini_Int(str,"Lackierung");
    CarInfo[carid][Nos] = dini_Int(str,"Nitro");
    CarInfo[carid][Hyd] = dini_Int(str,"Hydraulik");
    CarInfo[carid][Vents] = dini_Int(str,"Vents");
    CarInfo[carid][Lamps] = dini_Int(str,"Lamps");
    CarInfo[carid][Wheels] = dini_Int(str,"Wheels");
    CarInfo[carid][Hood] = dini_Int(str,"Hood");
    CarInfo[carid][Roof] = dini_Int(str,"Roof");
    CarInfo[carid][Auspuff] = dini_Int(str,"Auspuff");
    CarInfo[carid][Spoiler] = dini_Int(str,"Spoiler");
    CarInfo[carid][StossR] = dini_Int(str,"StossR");
    CarInfo[carid][StossF] = dini_Int(str,"StossF");
    CarInfo[carid][SideR] = dini_Int(str,"SideR");
    CarInfo[carid][SideL] = dini_Int(str,"SideL");

    ChangeVehicleColor(carid,CarInfo[carid][farbe1],CarInfo[carid][farbe2]);
    format(CarInfo[carid][Nummernschild],9,"%s",dini_Get(str,"Nummernschild"));
    format(nummer,sizeof(nummer),"%s",CarInfo[carid][Nummernschild]);
    SetVehicleNumberPlate(CarInfo[carid][ID],nummer);
    if(CarInfo[carid][PaintJob] > 0) {ChangeVehiclePaintjob(CarInfo[carid][ID],CarInfo[carid][PaintJob]);}
    if(CarInfo[carid][Nos] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][Nos]);}
    if(CarInfo[carid][Hyd] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][Hyd]);}
    if(CarInfo[carid][Wheels] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][Wheels]);}
    if(CarInfo[carid][Auspuff] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][Auspuff]);}
    if(CarInfo[carid][SideL] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][SideL]);}
    if(CarInfo[carid][SideR] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][SideR]);}
    if(CarInfo[carid][StossF] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][StossF]);}
    if(CarInfo[carid][StossR] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][StossR]);}
    if(CarInfo[carid][Spoiler] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][Spoiler]);}
    if(CarInfo[carid][Roof] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][Roof]);}
    if(CarInfo[carid][Hood] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][Hood]);}
    if(CarInfo[carid][Vents] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][Vents]);}
    if(CarInfo[carid][Lamps] > 0) {AddVehicleComponent(CarInfo[carid][ID],CarInfo[carid][Lamps]);}

    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(carid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    motor[carid] = false;
    }
    return 1;
    }


    Und Unter GamemodeInit:
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    new string[32];
    format(string, sizeof(string), "Autos/Car_%d.nec", i);
    if(fexist(string))
    {
    //if(IsSpawnedVehicle(i))
    LadeFahrzeug(i);
    SpawnedVehicles[i] = CreateVehicle(CarInfo[i][model], CarInfo[i][carx], CarInfo[i][cary], CarInfo[i][carz], CarInfo[i][cara],-1, -1, -1);
    LadeFahrzeug(i);
    CarInfo[i][motorschaden] = 0;
    }
    }


    abfragen der IDs:
    ocmd:papiere(playerid,params[])
    {
    if(!IsPlayerInAnyVehicle(playerid)) return 1;
    for(new veh=1;veh<MAX_VEHICLES;veh++)
    {
    if(CarInfo[veh][ID] == GetPlayerVehicleID(playerid))
    {
    new string[200];
    format(string,sizeof(string),"ID: %d - Model: %d\nBesitzer: %s\nKey1: %s\nKey2: %s\nKey3: %s\n\nAktueller Preis: %d",
    CarInfo[veh][ID],
    CarInfo[veh][model],
    CarInfo[veh][car_besitzer],
    CarInfo[veh][car_key1],
    CarInfo[veh][car_key2],
    CarInfo[veh][car_key3],
    CarInfo[veh][car_preis]);
    ShowPlayerDialog(playerid, 136, DIALOG_STYLE_MSGBOX,"Papiere des Fahrzeugs", string, "","");
    }
    }
    return 1;
    }

    Ich hatte das schon so probiert wie du es gemeint hast
    .. nur wieder raus gemacht da es nicht ging ...


    Oder ich habe es einfach falsch gemacht


    //Edit: nun habe ich es so://
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    new string[32];
    format(string, sizeof(string), "Autos/Car_%d.nec", i);
    if(fexist(string))
    {
    //if(IsSpawnedVehicle(i))
    LadeFahrzeug(i);
    SpawnedVehicles[i] = CreateVehicle(CarInfo[i][model], CarInfo[i][carx], CarInfo[i][cary], CarInfo[i][carz], CarInfo[i][cara],-1, -1, -1);
    LadeFahrzeug(i);
    CarInfo[i][motorschaden] = 0;
    }
    }


    Ich weis nur nicht genau, wo ich die abfrage hin tun soll, denn wenn ich sie in den Befehl einbaue, ist die Id ja trotzdem verschoben -.-
    und wenn ich sie bei OnGamemodeInit reintu werden die vehs garned erst gespawned ...


    //Edit: Infos


    Ich wesi nicht ob ihr das richtig versteht was ich meine:
    DIe Ids sind immer die richtigen, erst nachdem ein GMX gemacht wird, werden die Autos in falscher reihenfolge gespawned, aber nur wenn ein Auto Gelöscht wurde zB:
    Auto1 Auto2 Auto3 -- GMX -- alles in Ordnung
    Auto1 Auto3 -- GMX -- Auto 3 hat ID2 und kann ncihtmehr benutzt werden

    Es funkioniert leider immernoch nicht ... die Id's verschieben sich weiterhin


    vllt hilft ja das:
    Das Laden der Fahrzeuge:
    for(new i = 1; i < MAX_VEHICLES; i++)
    {
    new string[32];
    format(string, sizeof(string), "Autos/Car_%d.nec", i);
    if(fexist(string))
    {
    LadeFahrzeug(i);
    CreateVehicle(CarInfo[i][model], CarInfo[i][carx], CarInfo[i][cary], CarInfo[i][carz], CarInfo[i][cara],-1, -1, -1);
    //printf("AutoID: %d VehicleID: %d", CarInfo[i][ID], i);
    LadeFahrzeug(i);
    CarInfo[i][motorschaden] = 0;
    }
    }


    und dann ein Befehls beispiel womit ich die richtige Id abfrage:
    ocmd:papiere(playerid,params[])
    {
    if(!IsPlayerInAnyVehicle(playerid)) return 1;
    for(new veh=1;veh<MAX_VEHICLES;veh++)
    {
    if(CarInfo[veh][ID] == GetPlayerVehicleID(playerid))
    {
    new string[200];
    format(string,sizeof(string),"ID: %d - Model: %d\nBesitzer: %s\nKey1: %s\nKey2: %s\nKey3: %s\n\nAktueller Preis: %d",
    CarInfo[veh][ID],
    CarInfo[veh][model],
    CarInfo[veh][car_besitzer],
    CarInfo[veh][car_key1],
    CarInfo[veh][car_key2],
    CarInfo[veh][car_key3],
    CarInfo[veh][car_preis]);
    ShowPlayerDialog(playerid, 136, DIALOG_STYLE_MSGBOX,"Papiere des Fahrzeugs", string, "","");
    }
    }
    return 1;
    }

    Hallo liebe SA-MP Community :)


    Ich habe ein Problem mit meinem Selfmade Carsystem.
    Erstmal ein paar Infos zum System damit ihr euch ein bischen vortsellen könnt wie es aussieht.
    - Es wird momentan noch mit Dini gespeichert (Tuning, Spawn, Besitzer, Key1-3, Reallife Sachen (Tank, Motorschaden...))
    - Es ist komplett Dynamisch (d.h. man kann ein beliebiges Auto egal wo und egal zu welchem Preis spawnen (Es steht beim Spawn zum Verkauf))
    - Und wie bereits erwähnt ein komplettes Selfmade ... kein GF Carsystem oder so.
    - Jedes Auto bekommt eine eigene ID
    So, beim letzten Punkt liegt aber auch mein Problem.
    Die vehicleid vom Script aus stimmt mit der ID vom Auto überein (beim Zerstören des Autos, beim Löschen eines Autos und beim Neu spawnen eines Autos).
    Doch sobald man einen Server Neustart macht, Stimmen die ID's nicht mehr überein und jedes Auto hat falsche Informationen.
    d.h. bei einem Sultan zb, wird die ModelID eines Sabres angezeigt und die falschen Besitzer.


    Ich weis nicht wie ich diese ID verschiebung verhindern kann ...
    Ich bitte euch um hilfe :)


    mfg
    Ronon_Dex

    NEin das ist nur das Login system von Drake Bell :| von dem Tut. Und ehm könntest du mir das jetzt erklären wie ich das machen soll ?
    //Edit1/2: Das mit den Fraktionen hat sich erledigt das geht nun aber das mit dem Skin speicher geht immernoch net wirklich
    //Edit3: Hat sich alles erledigt und klappt perfekt :) *erledigt

    Ich habe mal nen /fest cmd gemacht :
    if(!strcmp(strget(cmdtext, 0), "/f"))
    {
    if(AccountInfo[playerid][pDuty] == 1 && AccountInfo[playerid][pCop] > 0)
    {
    new ziel;
    SendClientMessage(ziel, LIGHTBLUE, "||DU WURDEST VERHAFTET||");
    TogglePlayerControllable(playerid, false);
    }
    else
    {
    SendClientMessage(playerid,ROT," Das kannst du nicht");
    return 1;
    }
    }

    ich konnte ihn nur halbwegs testen und nur herrausfinden das das geschrieben nur an mich geht es sollte aber an denjenigen gehn der /fest gemacht wurde. Obs nur mich freezed oder den anderen konnte ich nicht testen pls help...

    ok sry wegen doppelpost und naja ich üsste ziehmlich viel posten weil es ja erst gespeichert werden muss. und das mit der Fraktion wäre erstmal wichtiger der Skin ist nicht so wichtig ich glaube ich bin kurz davor es selber heraus zu finden ^^
    Edit: Ich füge die Zeilen trotzdem mal ein ^^
    public OnPlayerSpawn(playerid)
    {
    new skin = AccountInfo[playerid][aSkin];
    SetPlayerSkin(playerid, skin);
    return 1;
    }

    und die stelle wo der Skin geändert wird ich gklaub du meinst den Befehl:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(strget(cmdtext, 0), "/setskin"))
    {
    if(!IsPlayerAdmin(playerid))
    {
    SendClientMessage(playerid,ROT," Du bist kein Admin!");
    }
    else
    {
    new giveplayer = strval(strget(cmdtext, 1));
    new skin = strval(strget(cmdtext, 2));
    SetPlayerSkin(giveplayer,skin);
    if(IsPlayerConnected(playerid))
    {
    if(AccountInfo[playerid][aLogged] == 1)
    {
    new string3[128];
    new playername3[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername3, sizeof(playername3));
    format(string3, sizeof(string3), Spieler, playername3);
    new ip[20];
    GetPlayerIp(playerid,ip,sizeof(ip));
    new File: hFile = fopen(string3, io_write);
    if (hFile)
    {
    new var[128];
    AccountInfo[playerid][aSkin] = GetPlayerSkin(playerid);
    format(var, 128, "Skin=%d\n",AccountInfo[playerid][aSkin]);fwrite(hFile, var);
    fclose(hFile);
    }
    }
    }
    return 1;
    }
    }

    Also ich hab mal angefangen ein kleinen Reallife Gamemode zusammen zu basteln und das ist bei rausgekommen :


    breadfish.de/wcf/attachment/1834/
    so nun zu den Fragen: 1. Das Scipt speichert den Skin zwar aber ich bekomm ihn nicht wenn ich spawne wieso ? 2. Ich habe versucht testweise eine Fraktion zu machen also speichern und dann bei einem befehl abrufen ob er in der Fraktion ist (habe in der Spieler.ini das Polizei= nicht auf 0 sondern auf 1 geändert) doch dies funktioniert überhaut nicht. Bitte um Hilfe, danke im Vorraus... ;( ( bin noch nich so gut im scripten ).
    Da Mein Script zulang war hat es nicht rein gepasst ( keine sorge ist nur ein Reggsys und 2, 3 befehle)
    ich hänge es an (bitte trotzdem helfen)

    ah okey ^^ gut zu wissen und ehm zur ersten frage zurück könntest du mir mal soetwas vorscripten das es funktioniert weil ich versteh das mit dem SetTimerEx nicht und habe auch schon ales mögliche ausprobiert... naja wäre net :)

    noch ne frage zwischen durch (will nicht extra ein neues thema anfangen ^^) kann man iergendwie abfragen in welcher VirtualenWelt ein spieler ist oder das man nur in einer bestimmten VirtualWorld ein befehl benutzen kann ?