[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend ich möchte in meinem Spawnvehicle befehl es verhindern wenn ein Trailer angekoppelt ist das er dann spawn


    wie mach ich das am besten ?

    for(new v=0; v<MAX_VEHICLES; v++)
    {
    if(!IsVehicleEmpty(v))continue;
    {
    SetVehicleToRespawn(v);
    }
    }

  • So am besten:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Brauchst du nicht, solltest du aber so machen. Ohne eine Schleife wäre es bischen viel schreibarbeit:
    new Float:x,Float:y,Float:z;
    GetVehiclePos(1,x,y,z);
    //speichern
    GetVehiclePos(2,x,y,z);
    //speichern
    GetVehiclePos(3,x,y,z);
    // speichern ... bis MAX_VEHICLES - 1

  • Brauchst du nicht, solltest du aber so machen. Ohne eine Schleife wäre es bischen viel schreibarbeit:
    new Float:x,Float:y,Float:z;GetVehiclePos(1,x,y,z);//speichernGetVehiclePos(2,x,y,z);//speichernGetVehiclePos(3,x,y,z);// speichern ... bis MAX_VEHICLES - 1

    Ahhhh ja kk das wäre wirklich schreibarbeit...
    Wenn ich jetzt eine Schleife machen würde ginge es eventuell so?


    Code
    for(new x = 0; x < MaxVeh; x++)
    {
    	new Float: X, Float: Y, Float: Z;
    	GetVehiclePos(/* Was müsste ich hier einsetzen? */, X, Y, Z);
    
    	format(query, sizeof(query), "UPDATE fahrzeuge (PosX, PosY, PosZ) VALUES ('%f', '%f', '%f') WHERE Name ='%s');", X, Y, Z, SpielerName(playerid))
    	mysql_function_query(dbhandle, query, false, "", "");
    }
  • for(new i = 0; i < MaxVeh; i++)
    {
    new Float: X, Float: Y, Float: Z;
    GetVehiclePos(i, X, Y, Z);
    format(query, sizeof(query), "UPDATE fahrzeuge SET PosX = '%f', PosY = '%f', PosZ = '%f' WHERE id ='%i';", X, Y, Z, i)
    mysql_function_query(dbhandle, query, false, "", "");
    }

  • for(new i = 0; i < MaxVeh; i++){ new Float: X, Float: Y, Float: Z; GetVehiclePos(i, X, Y, Z); format(query, sizeof(query), "UPDATE fahrzeuge SET PosX = '%f', PosY = '%f', PosZ = '%f' WHERE id ='%i';", X, Y, Z, i) mysql_function_query(dbhandle, query, false, "", "");}

    Ich habe diesbezüglich ein Problem @Jeffry.
    Es wird nicht gespeichert...


    Folgendes hat der Printer ausgeschrieben:

    Code
    [12:31:02] UPDATE fahrzeuge SET PosX = '0.000000', PosY = '0.000000', PosZ = '0.000000' WHERE CarModel = '0'
    [12:31:02] UPDATE fahrzeuge SET PosX  = '1461.199951', PosY  = '-2224.800048', PosZ = '13.300000' WHERE CarModel = '1'
    [12:31:02] UPDATE fahrzeuge SET PosX  = '1457.800048', PosY  = '-2224.699951', PosZ = '13.300000' WHERE CarModel = '2'
    [12:31:02] UPDATE fahrzeuge SET PosX  = '1454.500000', PosY  = '-2224.699951', PosZ = '13.300000' WHERE CarModel = '3'


    Diese "1,2,3" sind komisch, denn in der Datenbank sind die Spalten "ID, Carmodel" nicht auf 1-3.
    Das verwirrt mich gerade etwas ...

  • Ich habe mal paar Spalten gerade umbenannt, sonst verwecksle ich was :D


    Screenshot:
    Screenshot (185).png


    Ladefunktion:

  • @Jeffry:

  • Füge beim OnPlayerCarLogin das ein: PlayerCar[playerid][x][id] = cache_get_field_content_int(x,"id",dbhandle);
    Im Enum zu PlayerCar: id,


    Und das Speichern dann so:
    for(new i = 0; i < MaxVeh; i++)
    {
    new Float: X, Float: Y, Float: Z;
    GetVehiclePos(PlayerCar[playerid][i][CarId], X, Y, Z);
    format(query, sizeof(query), "UPDATE fahrzeuge SET PosX = '%f', PosY = '%f', PosZ = '%f' WHERE id ='%i';", X, Y, Z, PlayerCar[playerid][i][id])
    mysql_function_query(dbhandle, query, false, "", "");
    }

  • Setze die Variable auf true, sobald der Spieler das Radio anschaltet und beim ausschalten natürlich wieder auf false.

    Code
    new bool:RadioAn[MAX_VEHICLES];
    
    
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    	if(RadioAn[vehicleid] == true){
    		PlayAudioStreamForPlayer(...
    	}
    	return 1;
    }

  • COMMAND:radio(playerid,params[])
    {
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,ROT,"Du bist in keinem Fahrzeug!");
    if(GetPlayerVehicleSeat(playerid) != 0)return SendClientMessage(playerid,ROT,"Nicht der Fahrer des Fahrzeugs.");
    {
    new mainstring[1000];
    new string[200];
    for(new i=0;i<sizeof(Radio);i++)
    {
    format(string,sizeof(string),"{FFFFFF}%s\n",Radio[i][urlname]);
    strcat(mainstring,string);
    }
    strcat(mainstring,"{FFFFFF}Radio Aus");
    ShowPlayerDialog(playerid,DIALOG_RADIO,DIALOG_STYLE_LIST,"{FFFFFF}Radio",mainstring,"Auswählen","Abbrechen");
    }
    return 1;
    }


  • if(dialogid == DIALOG_RADIO)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(response == 0)return 1;
    else
    {
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,ROT,"Du sitzt in keinem Fahrzeug.");
    if(listitem > sizeof(Radio)-1)
    {
    ForEachPlayer(i)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    {
    if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
    {
    if(IsPlayerInVehicle(i,GetPlayerVehicleID(playerid)))
    {
    StopAudioStreamForPlayer(i);
    }
    }
    }
    }
    }
    return format(VehicleRadioStream[vehicleid],128,"NONE");
    }
    ForEachPlayer(i)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    {
    if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
    {
    if(IsPlayerInVehicle(i,GetPlayerVehicleID(playerid)))
    {
    StopAudioStreamForPlayer(playerid);
    PlayAudioStreamForPlayer(i,Radio[listitem][url]);
    format(VehicleRadioStream[vehicleid],128,Radio[listitem][url]);
    }
    }
    }
    }
    }
    }
    return 1;
    }





    @malE

    2 Mal editiert, zuletzt von SlashQ ()