Beiträge von tobialvarez

    Also das Kennzeichen wird nicht gesettet ... also denke ich auch das iwas da fehlt ..

    "sCarInfo[id][VehID]"
    und wie ich sehe wäre das ja die Variable "veh"...

    Ist mir klar, nur das ist falsch da du damit die ID des Vehikels des Spielers abfragst, der den Befehl eingibt, und das willst du ja nicht.


    Außerdem macht es keinen Sinn, GetPlayerVehicleID UND einen Parameter zu nutzen, entweder sind beide gleich, was einen unnötig macht, oder sie sind unterschiedlich, was falsch ist.


    Also die Frage: Was soll der Befehl eigentlich machen und was genau soll man eingeben als Parameter?
    Was ist das Ziel der Eingabe des Befehls?

    Also ich erkläre das jetzt so:
    Spieler xy gibt "/kennzeichen <carid> <preis> <kennzeichen>" ein sprich "/kennzeichen <2> <1000> <1339>"
    So, dann kriegt Spieler yx ein Dialog wo drin steht "Der Ordnungsbeamte %s will dir ein Kennzeichen anbieten.\nDies Kostet: %i\nKennzeichen-Name: DSZ-%i"
    Sollte er den "Antrag" annehmen (also Spieler yx) so kriegt das Auto von Spieler yx das Kennzeichen auf sein Car.
    Wenn der ablehnt, dann halt nicht, ich hoffe ich habe mich deutlich ausgedrückt ^^

    Macht für mich immer noch keinen wirklich praktikablen Sinn, aber gut.


    new string[128],veh,id,kspreis,ksz,pID,str[28];
    if(sscanf(params,"iii",veh,kspreis,ksz)) return SendClientMessage(playerid,-1,"Verwende: /kennzeichen [CarID] [Preis] [KennschildName (1-4 Zahlen)]");
    id = getSlotID(veh);


    Damit müsste er die VehicleID eingeben, die dann die SlotID sucht.

    Aber veh wurde bei mir hier für benutzt ...
    veh = GetPlayerVehicleID(playerid)


    Und woran weiß er dann genau in welchem Slot das Kennzeichen gespeichert werden muss?

    Poste mal die "getSlotID" Funktion und ein die Funktion mit der du ein solches Auto erstellst.

    Aber wenn ich es mit dem Befehl mache, klappt es fast ja ^^



    stock getSlotID(vehicleid)
    {
    new i;
    for(; i != MAX_VEHICLES; ++i)if(sCarInfo[i][VehID] == vehicleid)return i;
    return -1;
    }


    stock CreatePlayerCar(playerid,modelid, Float:X, Float:Y, Float:Z, Float:A, repPreis, kaufPreis){
    new id = getFreeSlot();
    if(id == -1)return SendClientMessage(playerid,-1,"Du kannst dir kein Auto kaufen das Limit ist erreicht.");
    sCarInfo[id][CarModelID] = modelid;
    sCarInfo[id][pCarPos_X] = X;
    sCarInfo[id][pCarPos_Y] = Y;
    sCarInfo[id][pCarPos_Z] = Z;
    sCarInfo[id][pCarPos_A] = A;
    sCarInfo[id][reppreis] = repPreis;
    sCarInfo[id][VKPreis] = kaufPreis;
    sCarInfo[id][CarTank] = 100.0;
    strcat(sCarInfo[id][sName],PlayerName(playerid),MAX_PLAYER_NAME);
    new query[256];
    format(query,256,"INSERT INTO `autos` (`Name`,`ModelID`,`AutoX`,`AutoY`,`AutoZ`, `AutoA`,`ReparaturPreis`, `VKPreis`, `CarTank`) VALUES ( '%s', %d, %f , %f, %f, %f, %d, %d, %f);",PlayerName(playerid),sCarInfo[id][CarModelID],sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z],sCarInfo[id][pCarPos_A],sCarInfo[id][reppreis],sCarInfo[id][VKPreis],sCarInfo[id][CarTank]);
    mysql_query(query);
    sCarInfo[id][CarID] = mysql_insert_id();
    sCarInfo[id][VehID] = CreateVehicle(sCarInfo[id][CarModelID],sCarInfo[id][pCarPos_X],sCarInfo[id][pCarPos_Y],sCarInfo[id][pCarPos_Z],sCarInfo[id][pCarPos_A],0,0,-1);
    PutPlayerInVehicle(playerid,sCarInfo[id][VehID],0);
    return 1;
    }

    Hallöle, hab wieder ein Problem.
    Ich wollte das Kennzeichen System in Dialog umändern, aber jetzt folgendes..
    - Wenn ich /kennzeichen machen und alles eingebe, bekomme ich den Dialog anstatt der Player dem das Fahrzeug gehört.
    - Das Kennzeichen wird der CarID nicht zu geschrieben.



    case AUTO_KENNZEICHEN:
    {
    if(response)
    {
    kzanfrage();
    return 1;
    }
    else
    {
    SendClientMessage(playerid,-1,"Das Kennzeichen wurde dir nicht zu geschrieben!");
    return 1;
    }
    }


    CMD:kennzeichen(playerid,params[])
    {
    new string[128],veh = GetPlayerVehicleID(playerid),id = getSlotID(veh),kspreis,ksz,pID,str[28];
    if(sscanf(params,"iii",sCarInfo[id][VehID],kspreis,ksz)) return SendClientMessage(playerid,-1,"Verwende: /kennzeichen [CarID] [Preis] [KennschildName (1-4 Zahlen)]");
    if(sInfo[playerid][pFraktion] != 1)return SendClientMessage(playerid,-1,"Du bist nicht im Ordnungsamt");
    if(!IsPlayerInRangeOfPoint(playerid,5.0,919.3960,-1264.7429,15.1719))return SendClientMessage(playerid,-1,"Hinweis: Du bist nicht beim TÜV (Ordnungsamt Base)");
    for(new i; i < MAX_VEHICLES; i++){
    if(strcmp(sCarInfo[i][CarSchildName],str)) return SendClientMessage(playerid,-1,"Hinweis: Das Kennzeichen gibt es schon!");
    }
    if(kspreis > 100000 || kspreis < 1) return SendClientMessage(playerid,-1,"Hinweis: Maximal nur 100.000$");
    if(sCarInfo[id][CarSchild])return SendClientMessage(playerid,-1,"Hinweis: Das Auto besitzt schon ein Kennschild!");
    if(kspreis > GetPlayerMoney(pID))return SendClientMessage(playerid,-1,"Hinweis: Soviel Geld hat der Spieler nicht!");
    sscanf(sCarInfo[id][sName],"u",pID);
    format(string,sizeof string,"Der Ordnungsbeamte %s will dir ein Kennzeichen anbieten.\nDies Kostet: %i\nKennzeichen-Name: DSZ-%i",SpielerName(playerid),kspreis,ksz);
    ShowPlayerDialog(pID, AUTO_KENNZEICHEN, DIALOG_STYLE_MSGBOX, "Kennzeichen - Antrag",string,"Annehmen","Ablehnen");
    return 1;
    }
    stock kzanfrage()
    {
    new pID,veh = GetPlayerVehicleID(pID),id = getSlotID(veh),kspreis,ksz,str[28];
    sscanf(sCarInfo[id][sName],"u",pID);
    //GetVehiclePos(sCarInfo[id][VehID],Pos[0],Pos[1],Pos[2]);
    SetVehicleToRespawn(sCarInfo[id][VehID]);
    sCarInfo[id][CarSchild] = 1;
    format(str,sizeof(str),"DSZ-%i",ksz);
    SetVehicleNumberPlate(sCarInfo[id][VehID],str);
    GivePlayerMoney(pID, -kspreis);
    SetVehiclePos(sCarInfo[id][VehID],909.2155,-1262.9668,14.4228);
    SendClientMessage(pID,-1,"Dein Fahrzeug hat ein Nummerschild bekommen.");
    saveCar(sCarInfo[id][VehID]);
    return 1;
    }

    Ich hoffe auf Hilfe, danke im voraus.


    Grüße

    format(str,sizeof(str),"DSZ-%i",iwelchenr);
    format(sCarInfo[id][CarSchildName],"%s",str);
    SetVehicleNumberPlate(die id, str);


    Geht immer noch nicht, das Kennschild wird richtig in die server_log geprintet ..
    Aber es wird NICHT auf das Kennschild übertragen ..
    /E:
    Jetzt wird es übertragen, aber nicht meinem Car sonderm vom Autohaus X(



    CMD:kennzeichen(playerid, params[])
    {
    new veh = GetPlayerVehicleID(playerid);
    new id = getSlotID(veh);
    new ksz[4],str[20],kspreis,pID;
    if(sInfo[playerid][pFraktion] != 1)return SendClientMessage(playerid,-1,"Du bist nicht im Ordnungsamt");
    if(!IsPlayerInRangeOfPoint(playerid,5.0,919.3960,-1264.7429,15.1719))return SendClientMessage(playerid,-1,"Hinweis: Du bist nicht beim TÜV (Ordnungsamt Base)");
    if(sscanf(params,"iii",veh,kspreis,ksz)) return SendClientMessage(playerid,-1,"Verwende: /kennzeichen [CarID] [Preis] [KennschildName (1-4 Zahlen)]");
    for(new i; i < MAX_VEHICLES; i++)
    {
    //format(str,sizeof(str),"DSZ-%i",kszahlen);
    if(strcmp(sCarInfo[i][CarSchildName],str)) return SendClientMessage(playerid,-1,"Hinweis: Das Kennzeichen gibt es schon!");
    }
    if(kspreis > 100000 || kspreis < 1) return SendClientMessage(playerid,-1,"Hinweis: Maximal nur 100.000$");
    if(sCarInfo[id][CarSchild])return SendClientMessage(playerid,-1,"Hinweis: Das Auto besitzt schon ein Kennschild!");
    sscanf(sCarInfo[id][sName],"u",pID);
    if(kspreis > GetPlayerMoney(pID))return SendClientMessage(playerid,-1,"Hinweis: Soviel Geld hat der Spieler nicht!");
    strcat(sCarInfo[id][CarSchildName],str,16);
    sCarInfo[id][CarSchild] = 1;
    format(str,sizeof(str),"DSZ-%i",ksz);
    SetVehicleNumberPlate(sCarInfo[id][VehID],str);
    GivePlayerMoney(pID, -kspreis);
    SendClientMessage(pID,-1,"Dein Fahrzeug hat ein Nummerschild bekommen.");
    return 1;
    }

    Hallöle,
    Und zwar, wenn ich dass mit dem /kennzeichen mache kommt "Hinweis: Das Kennzeichen gibt es schon" obwohl es das gar nicht gibt.



    CMD:kennzeichen(playerid, params[])
    {
    new veh = GetPlayerVehicleID(playerid);
    new id = getSlotID(veh);
    new ksz[4],str[20]="DSZ-",kspreis,pID;
    if(sInfo[playerid][pFraktion] != 1)return SendClientMessage(playerid,-1,"Du bist nicht im Ordnungsamt");
    if(!IsPlayerInRangeOfPoint(playerid,5.0,919.3960,-1264.7429,15.1719))return SendClientMessage(playerid,-1,"Hinweis: Du bist nicht beim TÜV (Ordnungsamt Base)");
    if(sscanf(params,"iii",veh,kspreis,ksz)) return SendClientMessage(playerid,-1,"Verwende: /kennzeichen [CarID] [Preis] [KennschildName (1-4 Zahlen)]");
    strcat(str,ksz);
    for(new i; i < MAX_VEHICLES; i++)
    {
    if(!strcmp(sCarInfo[i][CarSchildName],str)) return SendClientMessage(playerid,-1,"Hinweis: Das Kennzeichen gibt es schon!");
    }
    if(kspreis > 100000 || kspreis < 1) return SendClientMessage(playerid,-1,"Hinweis: Maximal nur 100.000$");
    if(sCarInfo[id][CarSchild])return SendClientMessage(playerid,-1,"Hinweis: Das Auto besitzt schon ein Kennschild!");
    sscanf(sCarInfo[id][sName],"u",pID);
    if(kspreis > GetPlayerMoney(pID))return SendClientMessage(playerid,-1,"Hinweis: Soviel Geld hat der Spieler nicht!");
    strcat(sCarInfo[id][CarSchildName],str,16);
    sCarInfo[id][CarSchild] = 1;
    SetVehicleNumberPlate(veh,str);
    GivePlayerMoney(pID, -kspreis);
    SendClientMessage(pID,-1,"Dein Fahrzeug hat ein Nummerschild bekommen.");
    return 1;
    }

    Zu deinem Roller:
    Du kickst den Spieler nicht mal raus, du lässt Ihn freezen und entfreezen.
    Mit "RemovePlayerFromVehicle(playerid);" schmeißt du Ihn raus.


    Der Code


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new i=0;i<sizeof NeulingsFahrzeuge;i++){
    if(vehicleid == NeulingsFahrzeuge[i]){
    if(GetPlayerScore(playerid)>2)return TogglePlayerControllable(playerid,1); RemovePlayerFromVehicle(playerid);
    }
    }
    return 1;
    }


    So zu deinem /makeadmin:

    if(!strcmp(cmdtext,"/makeadmin",true)){
    new pID,adminlevel,string[128],name[MAX_PLAYER_NAME];GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,"Du besitzt nicht den Adminrang 5!");
    if(sscanf(cmdtext,"ui",pID,adminlevel))return SendClientMessage(playerid,-1,"/makeadmin [id][adminlevel]");
    {
    SendClientMessage(playerid,-1,"~~| Admin Level |~~");
    SendClientMessage(playerid,-1,"Level 1 = Supporter");
    SendClientMessage(playerid,-1,"Level 2 = Adminrang 1");
    SendClientMessage(playerid,-1,"Level 3 = Adminrang 2");
    SendClientMessage(playerid,-1,"Level 4 = Server Leitung");
    SendClientMessage(playerid,-1,"Level 5 = Scripter");
    if(adminlevel<0||adminlevel>5)return SendClientMessage(playerid,-1,"Bitte gib einen Rang von 1-5 an");
    }
    SpielerS[pID][pAdminlvl] = adminlevel;
    format(string,128,"Admin %s hat dich zum Admin [%d] gemacht!",SpielerS[playerid][pName],adminlevel),SendClientMessage(pID,-1,string);
    SendClientMessage(pID,-1,string);
    SavePlayer(pID);
    }



    Mach dir am besten ein stock:
    stock SavePlayer()
    {
    mysql_SetInt("accounts","Adminlvl",SpielerS[pID][pAdminlvl],"pName",SpielerS[pID][pName]);
    ....
    .....
    .....
    ....
    }


    So müsste es gehen.