Beiträge von jdm_guy

    Habe auch wieder ein Problem.. Was muss ich mit dem string machen, wenn mehrere Autos Erstellt werden?(Nummernschild)
    kann ich dem String ein MAX_VEHICLES zuweisen?!
    Jedes Auto nach dem ersten bekommt immer "NULL"



    public OnPlayerCarsLoad()
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
    cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
    cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
    cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
    cInfo[id][id_db]=cache_get_field_content_int(i,"ID",dbhandle);
    new tmp_LicensePlate[16]; //funktioniert nur fürs erste
    cache_get_field_content(id, "LicensePlate", tmp_LicensePlate, dbhandle);
    strmid(cInfo[id][plate], tmp_LicensePlate, 0, sizeof(tmp_LicensePlate),sizeof(tmp_LicensePlate));



    cInfo[id][id_x]=CreateVehicle(cInfo[id][carmodel],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],cInfo[id][carcolor1],cInfo[id][carcolor2],-1);
    SetVehicleNumberPlate(cInfo[id][id_x],tmp_LicensePlate);
    VehicleLinkID[cInfo[id][id_x]] = cInfo[id][id_db];
    printf("cInfo id %d id_X %d linked to %d",id, cInfo[id][id_x],VehicleLinkID[cInfo[id][id_x]]);
    VehicleIsSpawned[cInfo[id][id_db]] = 1;
    }
    return 1;
    }

    Wenn ich ein Fahrzeug erstelle..


    Beispiel: abc = Createvehicle...


    Konkret:

    cInfo[i][id_x] = SetVehicleNumberPlate(CreateVehicle(modelid,RandomCarDealer2Spawn[rand2][0],RandomCarDealer2Spawn[rand2][1],RandomCarDealer2Spawn[rand2][2],RandomCarDealer2Spawn[rand2][3],cInfo[i][carcolor1],cInfo[i][carcolor2],-1)," ");


    müsste dann nicht "abc" die neue Fahrzeug ID sein? Also zB 100, wenn es das 100ste Fahrzeug ist?


    Frage ich "abc" ab, kommt 0 raus..


    Wie kann ich die ID des fahrzeugsbekommen?

    Okay, wie nenne ich den zweiten und dritten wert? willkürliche buchstaben?


    SetTimerEx("Refuel", 500, true, "i", "j", "k", "l", playerid,vehicleid,bsInfo[i][bs_compp],businessid); ?


    oder immerwieder "i"? Vorallem ist i kurz zuvor schon in benutzung, stört das?

    Wieso wird hier die vehicle id von 257(korrekt) zu 99?


    RefuelTimer[playerid] = SetTimerEx("Refuel", 500, true, "pid", "vid", "cp", "bid", playerid,vehicleid,bsInfo[i][bs_compp],businessid);


    forward Refuel(pid, vid, cp, bid); // tankenpublic Refuel(pid, vid, cp, bid){ new Float:gasleft, Float:gasneeded; gasleft = GetFuelSize(vid) - Fuel[vid]; gasneeded = GetFuelSize(vid) - gasleft; printf("gas needed= %f", gasneeded); printf("vehicleid %d", vid);


    muss ich "i" übergeben? geht das nicht mit "vid"?

    dann hast du vermutlich %f statt %d angegeben.BTW: du brauchst nicht den return Wert von GetVehicleVelocity speichern

    Oh mann.. Genau andersrum ;D mit %f kommt was vernünftiges raus. Danke !






    EDIT: Nächste Frage..


    Autos sollen mit Benzin spawnen. "onvehiclespawn" reagiert erst, wenn ein fahrzeug zerstört wurde. Wo muss ich ansetzen, dass beim serverstart Tank zugwiesen wird?

    Wieso kommt hier nicht das gleiche raus??


    Tacho bringt 0-167MPH:



    getPlayerSpeed(playerid)
    {
    new Float:x, Float:y, Float:z, Float:rtn;
    if(IsPlayerInAnyVehicle(playerid))
    {
    GetVehicleVelocity(GetPlayerVehicleID(playerid), x, y, z);
    }
    else
    {
    GetPlayerVelocity(playerid, x, y, z);
    }
    rtn = floatsqroot(x*x + y*y + z*z); //
    return floatround(rtn * 100 *1.35); // *
    }



    Aber nun kommt plötzlich eine Zahl mit 10 Stellen hier raus.. :



    getFuelSpeed(vehicleid)
    {
    new Float:x, Float:y, Float:z, Float:rtn;

    rtn = GetVehicleVelocity(vehicleid, x, y, z);
    rtn = floatsqroot(x*x + y*y + z*z); //
    return floatround(rtn * 100 *1.35); //


    Ich versteh es nicht. Wieso ist das so?

    Danke euch!
    Madds letzter Vorschlag sieht übersichtlich aus. Da kann ich dann gleich noch so eine Tabelle mit Verbrauchs Faktoren der Modelle machen, super. :)


    EDIT: Okay, ich hab jetzt 2 Tabellen (Tankinhalt und verbrauchskoeffizient) aber ich schaff es nicht "GetVehicleMaxFuel" abzufragen :(
    Wie sollte das aussehen?


    mein "Tank[i] = Tank[i] - GetVehicleFuelUsage(i);" sagt undefined symbol "model" ?

    Mit dem array müsste ich doch 211 mal max_tank[0], max_tank[1],.. listen, oder? Von der schreibarbeit her dachte ich, geht es schneller wenn ich die modellids 411 und xxx und xxx und xxx = 60 liter. Ist es performancetechnisch ein großer unterschied?


    Also sagen wir mal ich mache es wie in Kalibers Beispiel. Und möchte die Autos beim server start befüllen. Also setzte ich sinnigerweise bei "onvehiclespawn" an, oder? dann habe ich ja keine playerid. Somit müsste die abfrage dann so aussehen: ?


    printf("Landstalker hat ein Tankvolumen von %d Litern.", max_tank[GetVehicleModel(vehicleid)-400]);


    korrekt? Dann bleibt mir nurnoc hdie frage wo ich am besten diemax_tank[x] = y; im script plaziere?

    Ah, das macht sinn. Also fängt man aus performance Gründen bei 0 an? Zur übersichtlichkeit könnte man doch auch 400 nehmen und die voherigen ignorieren oder?


    Geht es auch so?



    GetFuelSize(vehicleid)
    {
    if(GetVehicleModel(vehicleid) == 411 || 412) return 60;


    }


    Ich glaube das "oder" ist falsch. kann ich überhaupt 60 returnen? als tankgröße? Ich will generell ja nicht nur mit playerid abfragen können, das auto muss ja beim server start bereits benzin bekommen

    C
    new max_tank[211];
    
    
    max_tank[0] = 80; //Bedeutet der Landstalker hat ein maximales Füllvolumen von 80 Litern
    
    
    //Abfragen: (angenommen wir sitzen in einem Landstalker)
    new v = GetPlayerVehicleID(playerid);
    printf("Landstalker hat ein Tankvolumen von %d Litern.", max_tank[GetVehicleModel(v)-400]);
    //Das gibt dir 80 eben aus :)

    Hier mal ein simples Beispiel ^^

    Okay. Aber wieso "max_tank[0] = 80 ? Wofür steht die 0? und wofür die 211?

    Ich bräuchte mal "Starthilfe"..


    Ich möchte verschiedenen modelIDs verschiedene Tank Größen zuweisen.
    Wie mach ich das am elegantesten? brauch ja erstmal ein "new gassize"
    Wie pack ich da ein "id model id ist gleich.." rein?!

    "SERVER: Unknown Command"


    Er funktioniert, aber wieso kommt diese Meldung??



    ocmd:taketest(playerid)
    {
    if(PlayerToPoint(10.0, playerid,1502.3094,1306.4109,1093.2891))
    {//penis
    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Welcome to Watson Automotive");
    ShowPlayerDialog(playerid,DIALOG_Drivinglic1,DIALOG_STYLE_MSGBOX,"Driving School","Welcome to Watson Automotive.\n\n\nHere you can acquire a Drivinglicense for Road Vehicles\nYou have to choose between CAR'S and BIKE'S\n\nYour License will be legit in all States of San Andreas\nThe Theoretical Driving Test will cost you $50 each try\nThe Physical Driving Test will cost you $300 each try\nIf you can't pay now, it will get you in debt\n\n\n","Continue","Cancel");
    }
    }

    Hey Leute.. wollte mal wieder etwas weiter machen, hänge aber noch bei dem prob dass man im im falschen Haus spawnt!


    Mithilfe des prints kontne ich feststellen, dass aus der Haus Datenbank abgefragt wird, allerdings nicht die korrekte ID gepickt, sondern einfach durchgezählt wird. Also es gibt kein Haus id0 und keine 3. Im player wird seien hausid (korrekt) gespeichert. Bei der spawnabfrage ist dann ID 2 aber die 1..
    Was muss am script angepasst werden, dass er wirkich die ID nimmt udn nicht durchzählt? Ich könnte klar jetzt die Lückenfüllen, aber kommt es später mal zu einer Lücke werden ja alle nachfolgenden mitgerissen...



    SetSpawnInfo( playerid, 0, pInfo[playerid][pSkin], hInfo[pInfo[playerid][pHouseID]][hi_x], hInfo[pInfo[playerid][pHouseID]][hi_y], hInfo[pInfo[playerid][pHouseID]][hi_z], 0.0,0,0,0,0
    SetPlayerInterior(playerid, hInfo[pInfo[playerid][pHouseID]][h_interior]);
    SetPlayerVirtualWorld(playerid, pInfo[playerid][pHouseID]);
    printf("haus interior id: %i", hInfo[pInfo[playerid][pHouseID]][h_interior]);
    printf("haus id: %i", pInfo[playerid][pHouseID]);


    WTF? W T F ?!


    Er zeigt in der console die korrekten koordinaten an!


    Habe dann mal SetPlayerPos ge-// und SetSpawnInfo benutzt. Plötzlich bin ich gespawnt. Wie kann das sein?! ABER SetPlayerInterior und VirtualWorld funktioniert nicht, denn ich bin in der Luft gespawnt und unsaft geladent^^