Beiträge von Jeffry


    Das ausgelesene Integer müsste man nun ja eigentlich in ein Array übernehmen können.


    Nein, das geht nicht. Arrays müssen mit Konstanten definiert werden, sie können nicht mit Variablen definiert werden.


    In Java geht das, in PAWN leider nicht.
    Du musst also zwangsweise den maximal möglichen Wert nehmen.

    So bringt mir das wenig, ich hatte dich um das GANZE Callback gebittet, also von "public" Bis zur letzten Klammer.


    Und markiere bitte die Zeile mit dem Error. Schreib auch die Zeile des pwn Codes in deinem Post dazu, dann sparen wir uns die Sucherei in dem langen Code.

    Bei OnPlayerKeyStateChange:


    if(newkeys & KEY_FIRE && GetPlayerState(playerid) == PLAYER_STATE_DRIVER )
    {
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(vid != INVALID_VEHICLE_ID)
    {
    if(engine == VEHICLE_PARAMS_ON)
    {
    StopEngine(playerid,vid);
    SendClientMessage(playerid,COLOR_GRAD2," Motor abgeschaltet.");
    }
    else
    {
    if(Gas[vid] > 0){
    if(PlayerInfo[playerid][pAdmin] >= 1337){
    if(Maske[playerid] == 0) {
    format(string, sizeof(string), "* %s startet den Motor",sendername);
    SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 2000); SetTimerEx("StartEngineSleep",800,0,"i",playerid);
    }
    else {
    SetPlayerChatBubble(playerid, "* jemand startet einen Motor", COLOR_PURPLE, 30.0, 2000); SetTimerEx("StartEngineSleep",800,0,"i",playerid);
    }
    SendClientMessage(playerid,COLOR_GRAD2," Motor wird gestartet.");
    if(SpawnKillAktiv[playerid] == 1) { SpawnSkillSchutz(playerid);}
    return 1;
    }
    new typ = IsAutohausCar(vid);
    new GATyp = IsGangAutohausCar(vid);
    if(typ != -1 || GATyp != -1){
    SendClientMessage(playerid,COLOR_GRAD2," Du hast keinen Schlüssel für das Fahrzeug.");
    return 1;
    }
    if(IsAMedicCar(vid)){
    if(PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4) { }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht bei den Medics !"); return 1; }
    }
    /* if(IsAFahrschulCar(vid)){
    if(PlayerInfo[playerid][pMember] == 11 || PlayerInfo[playerid][pLeader] == 11 || TakingLesson[playerid] == 1){}
    else{
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht bei der Fahrschule oder in einer Fahrstunde.");
    return 1;
    }}*/
    if(IsATruckerCar(vid)){
    if(PlayerInfo[playerid][pJob] == 16 || TakingLesson[playerid] == 1){}
    else{
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist kein Trucker !");
    return 1;
    }}
    if(IsANewsCar(vid)){
    if(PlayerInfo[playerid][pMember] == 9 || PlayerInfo[playerid][pLeader] == 9){}
    else{
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht bei den News Reportern !");
    return 1;
    }}
    if(IsAOAmtCar(vid)){
    if(!IsAOrdnungsbeamter(playerid)){
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist nicht beim Ordnungsamt !");
    return 1;
    }}
    if(IsACopCar(vid)){
    if(IsACop(playerid) && OnDuty[playerid] == 1){}
    else{
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist kein Cop oder nicht OnDuty !");
    return 1;
    }}
    for(new h = 0; h < sizeof(PilotFlug); h++){
    if(GetPlayerVehicleID(playerid) == PilotFlug[h]){
    if(PlayerInfo[playerid][pJob] == 18)
    {
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!");
    return 1;
    }}}
    for(new h = 0; h < sizeof(RobTransporter); h++){
    if(GetPlayerVehicleID(playerid) == RobTransporter[h]){
    if(TransporterRobberID == playerid || IsACop(playerid) && OnDuty[playerid] == 1){}
    else {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!");
    return 1;
    }}}
    for(new h = 0; h < sizeof(GangAutoInfo); h++){
    if(vid == GangAutoInfo[h][cID]){
    if(PlayerInfo[playerid][pMember] == GangAutoInfo[h][cOwner] || PlayerInfo[playerid][pLeader] == GangAutoInfo[h][cOwner] || TakingLesson[playerid] == 1 && GangAutoInfo[h][cOwner] == 1 || GangAutoInfo[h][cOwner] == 11 || (GangAutoInfo[h][cOwner] == 7 || GangAutoInfo[h][cOwner] == 14 || GangAutoInfo[h][cOwner] == 16) && IsACop(playerid)) { }
    else {
    SendClientMessage(playerid, COLOR_ERRORTEXT, "Du hast keinen Schlüssel für das Fahrzeug!"); return 1; }
    break;
    }}
    for(new h = 0; h < sizeof(AutomatischeFSCars); h++) {
    if(vid == AutomatischeFSCars[h]) {
    if(TakingLesson[playerid] == 2) { CP[playerid] = 24; SetPlayerCheckpoint(playerid, 1213.7196,-1841.5648,13.3828, 5.0); }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug! !"); return 1; }
    }}
    for(new h = 0; h < sizeof(MechanikerWagenCars); h++) {
    if(vid == MechanikerWagenCars[h]) {
    if(PlayerInfo[playerid][pJob] == 7) { }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug! !"); return 1; }
    }}
    for(new h = 0; h < sizeof(Drescher); h++) {
    if(vid == Drescher[h]) {
    if(PlayerInfo[playerid][pJob] == 10) {
    if(CP[playerid] == 50) { }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du musst erst mit /harvest die Ernte bestätiegen um den Motor Starten zu können!"); return 1; } }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!"); return 1; }
    }}
    for(new SlotID = 0; SlotID < sizeof(RentSystemInfo); SlotID++) {
    if(vid == RentSystemInfo[SlotID][RSCarID]) {
    if(RentSystemInfo[SlotID][RSRenterID] == playerid) { }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!"); return 1; }
    }}
    for(new car = 0; car < sizeof(KorierVans); car++) {
    if(vid == KorierVans[car][KRVehicle]) {
    if(KorierVans[car][KRMieterID] == playerid) { }
    else {
    if(PlayerInfo[playerid][pJob] == 19) { SendClientMessage(playerid, COLOR_GRAD4, " Du musst das Fahrzeug erst Mieten, dies kannst du mit /reservecar machen."); }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!"); }
    return 1;
    }}}
    for(new car = 0; car < sizeof(MulmanInfo); car++){
    if(vid == MulmanInfo[car][MmCarID]){
    if(MulmanInfo[car][MmLeiher] != playerid){
    if(PlayerInfo[playerid][pJob] == 20) { SendClientMessage(playerid, COLOR_GRAD4, " Du musst das Fahrzeug erst Mieten, dies kannst du mit /reservecar machen."); }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!"); }
    return 1;
    }}}
    for(new van = 0; van < 20; van++) {
    if(HackerVans[van][Aktive] == 1){
    if(vid == HackerVans[van][Vehicle]) {
    if(HackerVans[van][MieterID] == playerid) { }
    else { SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keinen Schlüssel für das Fahrzeug!"); return 1;
    }}}}
    if(Maske[playerid] == 0) { format(string, sizeof(string), "* %s startet den Motor",sendername); SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 30.0, 2000); }
    else { SetPlayerChatBubble(playerid, "* jemand startet einen Motor", COLOR_PURPLE, 30.0, 2000); }
    SetTimerEx("StartEngineSleep",1300,0,"i",playerid); SendClientMessage(playerid,COLOR_GRAD2," Motor wird gestartet.");
    format(string,sizeof(string),"%s macht de motor an/aus.", sendername);
    EnterToLog("motor",string);
    if(SpawnKillAktiv[playerid] == 1) { SpawnSkillSchutz(playerid);}
    }
    else { SendClientMessage(playerid,COLOR_GRAD2," Tank leer..."); }
    }
    }
    }


    Das wäre wenn du N drückst.
    Hier siehst du die verfügbaren Keys: http://wiki.sa-mp.com/wiki/Keys


    Den Motor Code musst du eventuell überarbeiten, da dort sehr viele returns sind, die machen je nach dem wie das OnPlayerKeyStateChange callback gestaltet ist, nicht immer Sinn.

    stock GetVehiclePrice(VehModelID)
    {
    for(new i=0;i<sizeof(DealershipVehicles);i++)
    {
    if(DealershipVehicles[i][modelid_veh] == VehModelID)
    {
    return DealershipVehicles[i][price];
    }
    }
    return -1;
    }


    Falls das so auch nicht tut, solltest du uns zeigen, wie du die Preise zuweist und abfragst.

    Du musst die Informationen auch wieder aus der Datenbank laden, wenn der Server gestartet wird.
    Das musst du dort machen, wo du auch die Positionen etc lädst.

    Map wieder rausmachen, testen ob es dann wieder geht.
    Wenn es wieder geht, ein Objekt einfügen, testen ob es geht. Wenn ja, schrittweise mehrere Objekte einfügen.


    Wenn es nicht geht, hast du irgendwas anderes kaputt gemacht. Backup laden.

    Weder noch wird aufgerufen, das legt nahe, dass RegCheck gar nicht aufgerufen wird.


    new q[128], name[MAX_PLAYER_NAME];


    zu:


    print("RegCheck gestartet");
    new q[128], name[MAX_PLAYER_NAME];



    Wenn das dann nicht geprintet wird, dann liegt der Fehler nicht am RegCheck, da es gar nicht aufgerufen wird, dann musst du woanders testen.

    //Registrierungs Check:
    public RegCheck(playerid)
    {
    new q[128], name[MAX_PLAYER_NAME];
    mysql_real_escape_string(PName(playerid), name);
    format(q, 128, "SELECT pass FROM user WHERE name = '%s'", name);
    mysql_query(q);
    mysql_store_result();


    if(mysql_num_rows() > 0)
    {
    print("Account gefunden");
    mysql_free_result();
    LoadPlayer(playerid);
    BanCheck(playerid);
    PInfo[playerid][lversuche] = 3;
    print("Login Zeigen");
    ShowDialog(playerid, DIA_LOGIN, DIALOG_STYLE_PASSWORD, "Einloggen", "{FF6E30}Dein Account wurde gefunden!\r\nBitte gib dein Passwort ein um dich Einzuloggen.\r\nVersuche: {FF0000}3/3", "Login", "Abbrechen");
    print("Login gezeigt");
    }
    else
    {
    //emsg(playerid, "** Bewirb dich in unserem Forum als Alpha Tester.");
    //Kick(playerid);


    mysql_free_result();


    print("Account nicht gefunden");


    new PIP[32];
    GetPlayerIp(playerid, PIP, 32);
    format(q, 255, "SELECT * FROM ips WHERE ip='%s'", PIP);
    mysql_query(q);


    mysql_store_result();


    if(mysql_num_rows() > 0)
    {
    mysql_free_result();
    emsg(playerid, ">> Multi-Accounts sind nicht gestattet!");
    Kick(playerid);
    }
    print("Account registrieren");
    PInfo[playerid][inregister] = 1;
    ShowDialog(playerid, DIA_GENDER, DIALOG_STYLE_LIST, "Registrieren", "Männlich\r\nWeiblich", "Weiter", "");
    print("Account registrieren gezeigt");
    }
    }


    Füg das mal so ein und poste dann, was im server_log steht.

    Für den Job der dir noch fehlt das was ich bereits vorhin sagte:
    format(query,sizeof(query),"UPDATE user SET sjob='%i' WHERE id='%i'",sInfo[playerid][sjob],sInfo[playerid][id]);


    zu:
    format(query2,sizeof(query2),"UPDATE user SET sjob='%i' WHERE id='%i'",sInfo[playerid][sjob],sInfo[playerid][id]);



    Oder das gesamte zu:
    if(sInfo[playerid][eingeloggt]==0)return 1;//Speichert keine leute die nicht eingeloggt sind
    new query[256];
    format(query,sizeof(query),"UPDATE user SET level='%i',geld='%i', skin='%i' , alevel='%i', fraktion='%i', rang='%i', schange='%i', WLevel='%i', knast='%i', ngknast='%i' , hstatus='i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][skin],sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][schange],GetPlayerWantedLevel(playerid),sInfo[playerid][knast],sInfo[playerid][ngknast],sInfo[playerid][hstatus],sInfo[playerid][id]);
    mysql_function_query(dbhandle,query,false,"","");
    format(query,sizeof(query),"UPDATE user SET sjob='%i' WHERE id='%i'",sInfo[playerid][sjob],sInfo[playerid][id]);
    mysql_function_query(dbhandle,query,false,"","");

    ocmd:hmieten(playerid,params[])
    {
    new hID = hRange(playerid),query[256];
    if(hID != -1)
    {
    if(!strlen(HausInfo[hID][h_mieter1]))
    {
    format(query,sizeof(query),"UPDATE `h_mieter1` = '%s' WHERE `ID` = '%d'",HausInfo[hID][h_mieter1],id);
    db_query(Database,query);
    SendClientMessage(playerid,gruen,"Du hast dir ein Zimmer (1) Gemietet.");
    return 1;


    }
    else if(!strlen(HausInfo[hID][h_mieter2]))
    {
    format(query,sizeof(query),"UPDATE `h_mieter2` = '%s' WHERE `ID` = '%d'",HausInfo[i][h_mieter2],id);
    db_query(Database,query);
    SendClientMessage(playerid,gruen,"Du hast dir ein Zimmer (2) Gemietet.");
    return 1;


    }
    else if(!strlen(HausInfo[hID][h_mieter3]))
    {
    format(query,sizeof(query),"UPDATE `h_mieter3` = '%s' WHERE `ID` = '%d'",HausInfo[i][h_mieter3],id);
    db_query(Database,query);
    SendClientMessage(playerid,gruen,"Du hast dir ein Zimmer (3) Gemietet.");
    return 1;
    }
    else if(!strlen(HausInfo[hID][h_mieter4]))
    {
    format(query,sizeof(query),"UPDATE `h_mieter4` = '%s' WHERE `ID` = '%d'",HausInfo[i][h_mieter4],id);
    db_query(Database,query);
    SendClientMessage(playerid,gruen,"Du hast dir ein Zimmer (4) Gemietet.");
    return 1;


    }
    else if(!strlen(HausInfo[hID][h_mieter5]))
    {
    format(query,sizeof(query),"UPDATE `h_mieter5` = '%s' WHERE `ID` = '%d'",HausInfo[i][h_mieter5],id);
    db_query(Database,query);
    SendClientMessage(playerid,gruen,"Du hast dir ein Zimmer (5) Gemietet.");
    return 1;


    }
    return SendClientMessage(playerid,gruen,"Kein Zimmer mehr frei.");
    }
    return SendClientMessage(playerid,gruen,"Du bist nicht nahe einem Zimmer.");
    }


    Ich habe mal versucht deinen Code zu interpretieren.

    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid,1214.8542,-924.1797,42.9131);
    SetPlayerFacingAngle(playerid,187.3397);
    SetPlayerCameraPos(playerid,1210.8542,-924.1797,42.9131); //Hier die X Koordinate geändert.
    SetPlayerCameraLookAt(playerid,1214.8542,-924.1797,42.9131);
    return 1;
    }


    Du hattest alle Koordinaten gleich, das Funktioniert dann nicht.


    SetPlayerCameraPos => Hier ist der Standpunkt der Kamera (NICHT gleich wie die des Spielers (SetPlayerPos)!)
    SetPlayerCameraLookAt => Hier schaut die Kamera hin (am besten GLEICH wie SetPlayerPos).



    EDIT: Du kannst auch mal das hier ausprobieren, falls du mit den Koordinaten nicht klar kommst: forum.sa-mp.com/showthread.php?t=140360

    Versuche mal:
    mysql_function_query(dbhandle,query,false,"","");
    mysql_function_query(dbhandle,query2,false,"","");


    zu:
    mysql_query(query);
    mysql_query(query2);


    Da du ja kein weiteres Callback aufrufst.


    Falls das auch nichts hilft bin ich raus, da ich mich nicht genauers mit dem Cache-MySQL auskenne.