Beiträge von samu

    Hi,


    was habe ich hier falsch gemacht? Funktionieren tuts jedenfalls nicht...


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if (newkeys & KEY_SUBMISSION)
    {
    //LSPD
    if(PlayerToPoint(1.0, playerid, 1580.0464,-1635.0250,13.5613))
    {
    if(AccountInfo[playerid][Hjob] == 1)
    {
    if(AccountInfo[playerid][JobActive] == 0)
    {
    SetPlayerSkin(playerid, 280);
    SetPlayerColor(playerid, 0x375FFFFF);
    AccountInfo[playerid][JobActive] = 1;
    GivePlayerWeapon(playerid, 334, 1);
    GivePlayerWeapon(playerid, 348, 60);
    return 1;
    }
    else
    {
    SetPlayerSkin(playerid, AccountInfo[playerid][Skin]);
    SetPlayerColor(playerid, 0xFFFFFFFF);
    AccountInfo[playerid][JobActive] = 0;
    GivePlayerWeapon(playerid, 334, -1);
    GivePlayerWeapon(playerid, 348, -60);
    return 1;
    }
    }
    }
    }
    return 1;
    }


    Gruß
    samu

    Hi,


    habe mir mal ein kleines Jobsystem geschrieben, mit dem man per Befehl User bei bestimmten Jobs einstellen kann feuern und das man in Dienst gehen kann. So mein Problem: Ich gebe im SPiel zB ein /asetjob 0 (Meine ID) 2 (Jobid) 1 (Level)
    Dann wird in der Userdatei die entsprechenden Sache eingetragen.


    if(strcmp(cmd, "/asetjob", true) == 0)
    {
    if(AccountInfo[playerid][AdminLevel] >=3 || IsPlayerAdmin(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, ORANGE, "Benutze: /asetjob [Playerid] [Jobid] [Level 1-2]");
    return 1;
    }
    new giveplayerid = ReturnUser(tmp, playerid);
    tmp = strtok(cmdtext, idx);
    new jobid = strval(tmp);
    tmp = strtok(cmdtext, idx);
    new level = strval(tmp);
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(jobid == 1)
    {
    if(level == 1)
    {
    GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "Administrator %s hat dich zum Polizist gemacht!", sendername);
    SendClientMessage(giveplayerid, LIGHTBLUE, string);
    format(string, sizeof(string), "Du hast %s zum Polizist gemacht!", giveplayername);
    SendClientMessage(playerid, LIGHTBLUE, string);
    AccountInfo[giveplayerid][HjobLevel] = level;
    AccountInfo[giveplayerid][Hjob] = 1;
    //OnPlayerUpdateAccount(playerid);
    }
    if(level == 2)
    {
    GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "Administrator %s hat dich zum Chef des SAPD gemacht!", sendername);
    SendClientMessage(giveplayerid, LIGHTBLUE, string);
    format(string, sizeof(string), "Du hast %s zum Chef des SAPD gemacht!", giveplayername);
    SendClientMessage(playerid, LIGHTBLUE, string);
    AccountInfo[giveplayerid][HjobLevel] = level;
    AccountInfo[giveplayerid][Hjob] = 1;
    //OnPlayerUpdateAccount(playerid);
    }
    }
    U.S.W


    Dann habe ich zB beim Krankenhaus in LS einen Pickup ohne Funktion. Dann einen Timer drin der alle paar Sekunden abfrägt ob jmd im Pickup steht und/oder in Dienst ist oder nicht. Das passiert hier:


    public JobCheck(playerid)
    {
    //LSPD
    if(PlayerToPoint(1.0, playerid, 1580.0464,-1635.0250,13.5613))
    {
    if(AccountInfo[playerid][Hjob] == 1)
    {
    if(AccountInfo[playerid][JobActive] == 0)
    {
    SetPlayerSkin(playerid, 280);
    SetPlayerColor(playerid, 0x375FFFFF);
    AccountInfo[playerid][JobActive] = 1;
    GivePlayerWeapon(playerid, 334, 1);
    GivePlayerWeapon(playerid, 348, 60);
    return 1;
    }
    else
    {
    SetPlayerSkin(playerid, AccountInfo[playerid][Skin]);
    SetPlayerColor(playerid, 0xFFFFFFFF);
    AccountInfo[playerid][JobActive] = 0;
    GivePlayerWeapon(playerid, 334, -1);
    GivePlayerWeapon(playerid, 348, -60);
    return 1;
    }
    }
    }
    //SFPD
    if(PlayerToPoint(1.0, playerid, -1593.1597,716.1147,-5.2422))
    {
    if(AccountInfo[playerid][Hjob] == 1)
    {
    if(AccountInfo[playerid][JobActive] == 0)
    {
    SetPlayerSkin(playerid, 281);
    SetPlayerColor(playerid, 0x375FFFFF);
    AccountInfo[playerid][JobActive] = 1;
    GivePlayerWeapon(playerid, 334, 1);
    GivePlayerWeapon(playerid, 348, 60);
    return 1;
    }
    else
    {
    SetPlayerSkin(playerid, AccountInfo[playerid][Skin]);
    SetPlayerColor(playerid, 0xFFFFFFFF);
    AccountInfo[playerid][JobActive] = 0;
    GivePlayerWeapon(playerid, 334, -1);
    GivePlayerWeapon(playerid, 348, -60);
    return 1;
    }
    }
    }
    U.S.W ...


    So, sobald ich nun den Befehl eingegeben habe kann ich zB als Sanitäter in Dienst gehen, bekomme meinen Skin etc..
    Wenn ich nun RC mache und wieder in Dienst gehen will geht es nicht mehr obwohl in der Userdatei immernoch genau das steht was ich dafür brauche.


    Fehlt da irgendwas oder ist was falsch?



    Viele Grüße
    samu

    ok, er steigt immernoch ein :cursing: :cursing: :cursing:


    ich habe bei StateChange an der Stelle jetzt garnichts mehr stehen, also die 3 sachen auskommentiert, ist das richtig?


    Was mir auffällt, immer wenn ich On gehe kann ich in jedes Auto rein, erst wenn ich mal /setcarowner Name mache, also einen andern geht das das ich nicht einsteigen kann, nach dem ich RC gemacht habe komm ich wieder rein...

    hmm das ist genau das gleiche, man steigt ein obwohl zu ist und man nicht der Besitzer ist und kann losfahren ...


    EDIT: Geht es nicht das wenn er einsteigen "Möchte :thumbup: " er was anderes macht, eine Animation oder so, eben das er garnicht erst ins Auto einsteigt?

    ok das mit der meldung kommt jetzt auch nicht mehr :)
    Gibt es denn keine Möglichkeit das er da nicht erst ins auto einsteigt und dann wieder rausgeworfen wird? Das er vl einfach garnix macht?
    Weil in dem Moment wo man drinsitzt kann man mit /setcarowner .... den Besitzer ändern .. :rolleyes:


    EDIT: Habe das RemovePlayerFromVehicle mal mit SetVehicleParamsForPlayer ausgetauscht.
    if(CarInfo[carid][carslock] == 1)
    {
    //RemovePlayerFromVehicle(playerid);
    SetVehicleParamsForPlayer(carid,playerid,0,1 );
    TogglePlayerControllable(playerid,1);
    }
    else


    Aber dann kann man garnicht mehr ins Auto einsteigen, auch wenn man der Besitzer ist :pinch:

    Ok, das funktioniert schonmal :thumbup:


    noch so am Rande, kann man es machen, das wenn man nicht der Besitzer ist und das Auto abgeschlossen ist, das er erst garnicht einsteigt und dann wieder rausgeworfen wird? Weil sonst kommt ja erstens immer die Meldung mit Kurzschließen bla bla und es macht sich eben besser wenn er vl an der Tür zieht oder am besten garnichts macht ...


    Gruß
    samu

    Hi,


    ich möchte bei OnPlayerStateChange mehrer If-Abfragen verwenden. Und zwar vier Fälle:
    1. Der Carownername stimmt überein und das Auto ist abgeschlossen (Meldung mit SendClientMessage)
    2. Der Carownername stimmt überein und das Auto ist nicht abgeschlossen (Auch ne Meldung)
    3. Der Carownername stimmt nicht überein und das Auto ist offen (Meldung ...)
    4. Der Carownername stimmt nicht überein und das Auto ist zu (RemovePlayerFromVehicle)


    So habe ich das mal ausprobiert, aber das wirft mir Pawno um dir Ohren :S


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == 2)
    {
    new name3[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name3, sizeof(name3));
    new carid = GetPlayerVehicleID(playerid);

    if (strcmp(name3, CarInfo[carid][carsowner], true) == 0)
    {
    if(CarInfo[carid][carslock] == 1)
    {
    SendClientMessage(playerid,GREY, "Motor gestartet ...");
    SendClientMessage(playerid,GREY, "Dein Wagen ist abgeschlossen!");
    return 1;
    }
    else if(CarInfo[carid][carslock] == 0)
    {
    SendClientMessage(playerid, GREY, "Motor gestartet ...");
    SendClientMessage(playerid, ORANGE, "Dein Wagen ist nicht abgeschlossen!");
    }
    else
    {
    SendClientMessage(playerid,ORANGE, "Dieses Fahrzeug gehört nicht dir!");
    SendClientMessage(playerid,ORANGE, "Tippe /kurzschließen um das Fahrzeug kurzzuschließen! Achtung: Fahrzeuge klauen ist gegen das Gesetz!");
    return 1;
    }
    else if(strcmp(name3, CarInfo[carid][carsowner], true) == 0)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }
    }
    return 1;
    }


    Hoffe Ihr könnt mir weiterhelfen!


    Grüße
    samu

    also, solange ich auf dem Server bin funktioniert alles. Dann habe ich mal den Owner geändert, also es steht ein anderer Name in der Datei, aber wenn ich Rc mache komme ich wieder ins Auto rein, obwohl der Name nicht übereinstimmt ?(

    Hi,


    habe ein Problem mit einer If-Abfrage. Ich möchte, das wenn jemand in ein Auto einsteigt, der Carowner Name aus der Datei des Fahrzeugs mit dem Namen von Spieler verglichen wird. Hier der Scriptteil:



    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == 2)
    {
    new name3[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name3, sizeof(name3));
    new carid = GetPlayerVehicleID(playerid);

    if(CarInfo[carid][carsowner] == name3)
    {
    SendClientMessage(playerid,GREEN, "Motor gestartet ...");
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    }
    }
    return 1;
    }


    Dabei kommt immer der Fehler "error 033: array must be indexed (variable "name3")"
    Zeile: if(CarInfo[carid][carsowner] == name3)


    Was mache ich falsch? ?(


    Gruß
    samu

    also, komischerweise trägt er nur zahlen ein, das heißt wenn ich ~/setcarowner samu~ mache wird nichts in die Datei eingetragen, wenn ich ~ /setcarowner 22 ~ mache, steht dann in der Datei ne 22 8|


    Hier der Codeausschnitt von Savecar:


    public SaveCar(carid)
    {
    new str[256];
    format(str, sizeof(str), "/cars/car%d.car", carid);
    if(carid == 0)
    {
    return 1;
    }
    new File: cfile = fopen(str, io_write);
    new filestr[256];
    format(filestr, sizeof(filestr), "%d|%d|%d|%d|%d|%s|%d|%d|%d|%f|%d|%d|%d|%d|%f|%f|%f|%f|%f|%f|%f|%f|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d",
    CarInfo[carid][carsid],
    CarInfo[carid][carscurid],
    CarInfo[carid][carsmodel],
    CarInfo[carid][carstype],
    CarInfo[carid][carsbuyable],
    CarInfo[carid][carsowner],
    CarInfo[carid][carsinsured],
    CarInfo[carid][carsvalue],
    CarInfo[carid][carsfuel],
    CarInfo[carid][carshp],
    CarInfo[carid][carscolor1],
    CarInfo[carid][carscolor2],
    CarInfo[carid][carscolor3],
    CarInfo[carid][carslocked],
    CarInfo[carid][carsparkx],
    CarInfo[carid][carsparky],
    CarInfo[carid][carsparkz],
    CarInfo[carid][carsparkang],
    CarInfo[carid][carsx],
    CarInfo[carid][carsy],
    CarInfo[carid][carsz],
    CarInfo[carid][carsang],
    CarInfo[carid][carsfbumper],
    CarInfo[carid][carsfbbars],
    CarInfo[carid][carsrbumper],
    CarInfo[carid][carsrbbars],
    CarInfo[carid][carswheels],
    CarInfo[carid][carslskirt],
    CarInfo[carid][carsrskirt],
    CarInfo[carid][carshydros],
    CarInfo[carid][carsspoiler],
    CarInfo[carid][carsroof],
    CarInfo[carid][carshood],
    CarInfo[carid][carsexhaust],
    CarInfo[carid][carslights],
    CarInfo[carid][carsstereo],
    CarInfo[carid][carsnitro],
    CarInfo[carid][carslhood],
    CarInfo[carid][carsrhood]
    );
    fwrite(cfile, filestr);
    fclose(cfile);
    return 1;
    }

    Hi,


    habe ein Problem mit dem speichern vom Carowner.


    if(strcmp(cmd, "/setcarowner", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new carid = GetPlayerVehicleID(playerid);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, ORANGE, "Benutze: /setcarowner [Name]");
    return 1;
    }
    new tmpowner;
    tmpowner = strval(tmp);
    CarInfo[carid][carsowner] = tmpowner;
    SaveCar(carid);
    return 1;
    }
    }


    Es kommen keine Fehler aber passieren tut auch nichts wenn ich den Befehl eingebe ;(

    Hi,


    wie kann ich den Skin, den ich mit /setskin ID Skinid einem Spieler zuteilt habe in einer Datei speichern die dann nach Rc wieder aufgerufen wird?
    Bis jetzt sieht das Scriptstück so aus:



    if(strcmp(!strget(cmdtext, 0), "/setskin")) {
    new giveplayer = strval(strget(cmdtext, 1));
    new skin = strval(strget(cmdtext, 2));
    SetPlayerSkin(giveplayer,skin);
    GetPlayerSkin(playerid);
    return 1;
    }


    Was muss jetzt da genau noch hin?


    Viele Grüße
    samu