[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
  • Gibt es eigentlich eine möglichkeit von Dialogen die values rauszulesen ? zB


    ShowPlayerDialog(playerid,DIALOG_WEAPONS,DIALOG_STYLE_LIST,"Waffen","AK\nM4","Kaufen","Abbrechen");


    das man zb die werte von dem info string rauslesen kann ? Also das ich letztendlich auf "AK\nM4" als String zu greifen kann ohne lisitem zu arbeiten

  • es gibt ja verschiedene Trailer (LKW-Anhänger). Die meisten können andere Motive annehmen (1 Trailer = 3Motive; zb: Werbung an den Seiten) und meine Frage dazu ist nun, ob man das Abfragen kann? Damit ich zum Beispiel Ladungen besser zuordnen kann.


    Nein, das geht leider nicht.
    Das liegt wohl auch daran, dass die Texttur nicht einheitlich für alle Spieler angezeigt wird. Das selbe Problem haben die Autos, bei denen ab und an ein Dach drauf ist, obwohl es ein Cabrio für einen anderen Spieler ist.

  • Wie lässt man einen Motor mit verzögerung starten?


    Habe nun:



    forward Motorstarten();


    ocmd:motor(playerid,params[])
    {
    if(GetPlayerVehicleSeat(playerid) == 0)
    {
    new veh = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(veh) == 509 || GetVehicleModel(veh) == 481 || GetVehicleModel(veh) == 510) return SendClientMessage(playerid,WEIS,"Fahrräder besitzen keinen Motor.");
    else if (Motor[veh] == false)
    {
    SetTimer("Motorstarten",2000,false,"i",playerid);
    SendClientMessage(playerid,WEIS,"*Du drehst den Zündschlüssel herum, und lässt den Motor starten...*");

    }
    else
    {
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(veh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    SendClientMessage(playerid,ROT,"Motor wurde gestoppt.");
    Motor[veh] = false;
    }
    }
    return 1;
    }


    public Motorstarten()
    {
    new veh;
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(veh,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    SendClientMessage(playerid,NEONGRUEN,"Motor wurde gestartet.");
    Motor[veh] = true;
    }


    Es steht dann nur da Motor wurde Gestartet :D

  • Das dürfte gar nicht compilen weil du da einige Fehler hast.


    SetTimer("Motorstarten",2000,false,"i",playerid);


    kann keine Argumente an Funktionen übergeben und wird deshalb zu


    SetTimerEx("Motorstarten",2000,false,"i",playerid);



    Du übergibst einen Integer (playerid) als Argument obwohl die Funktion überhaupt keine Argumente annimmt, deshalb:


    public Motorstarten(playerid)
    {
    new veh;
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(veh,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    SendClientMessage(playerid,NEONGRUEN,"Motor wurde gestartet.");
    Motor[veh] = true;
    }

  • SetTimerEx("Motorstarten",2000,false,"i",playerid);


    Du solltest noch zu deinem post hinzufügen das der integer veh in der funktion Motorstart den wert 0 besitzt da die fahrzeugid des fahrzeuges in dem ein spieler sitzt diesem
    nicht zugeordnet wird dies macht die funktion fehlerhaft.
    Daher new veh =GetPlayerVehicleID (playerid);
    oder die variante die ich präferieren würde einfach ein weiteres argument hinzufügen zur funktion, da dieser wert im befehl schon ausgrlesen wurde.


    SetTimerEx("Motorstarten",2000,false,"ii",playerid, veh);


    public Motorstarten (playerid, veh){

  • Mal ne kurze frage.
    Habe diesen Teil funktzioniert alles Wunderbar:

    new string[256];
    format(string,30,"%s",dini_Get(File,"Befehle"));
    strins(string, "|", strlen(string));
    printf(string);
    new oldi=0;
    new count=0;
    for(new i=0; i<strlen(string); i++)
    {
    if(string[i]=='|')
    {
    count++;
    new tmpstring[sizeof(string)]; tmpstring=string;
    strdel(tmpstring, i, strlen(tmpstring));
    strdel(tmpstring, 0, oldi+1);
    switch(count)
    {
    case 1: aa = strval(tmpstring);
    case 2: bb = strval(tmpstring);
    case 3: cc = strval(tmpstring);
    case 4: dd = strval(tmpstring);
    case 5: ee = strval(tmpstring);
    case 6: ff = strval(tmpstring);
    case 7: gg = strval(tmpstring);
    case 8: hh = strval(tmpstring);
    case 9: ii = strval(tmpstring);
    case 10: jj = strval(tmpstring);
    case 11: kk = strval(tmpstring);
    case 12: ll = strval(tmpstring);
    case 13: mm = strval(tmpstring);
    }
    oldi=i;
    }
    }
    printf("%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d",aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm);


    Beim ersten Print läuft alles Wunderbar aber wie ihr seht beim zweiten wird aus der ersten 1 eine 0?
    Sehe keinen Fehler ihr etwa?
    Hier noch von der Serverlog der aussschnit:


    [16:48:06] 1|1|1|1|1|1|1|1|1|1|1|1|1
    [16:48:06] 0|1|1|1|1|1|1|1|1|1|1|1|1

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Heyho,


    Ich habe heute ein Interiour gemappt weit oben in der Luft so das kein Flugzeug ect dagegen fliegen kann. Nun habe ich aber das Problem das ich im script die Texturen änder aber ingame selber werden sie nicht geändert. Hier mal meine Code:


    Oben im Script:
    new awand[40];


    Dann unter public OnGameModeInit() :
    new awand[40], ib;
    awand[ib]=CreateObject(19357,-1458.5000000,2666.4001465,824.0999756,0.0000000,0.0000000,0.0000000); //amt 9570(15)
    awand[ib]=CreateObject(19357,-1460.2999268,2660.0000000,824.0000000,0.0000000,0.0000000,90.0000000); //amt 9570(21)
    awand[ib]=CreateObject(19357,-1466.6998291,2660.0000000,824.0000000,0.0000000,0.0000000,90.0000000); //amt 9570(23)
    awand[ib]=CreateObject(19357,-1469.8997803,2660.0000000,824.0000000,0.0000000,0.0000000,90.0000000); //amt 9570(24)
    awand[ib]=CreateObject(19357,-1458.5000000,2660.0002441,824.0999756,0.0000000,0.0000000,0.0000000); //amt 9570(28)
    awand[ib]=CreateObject(19357,-1460.1999512,2664.8999023,824.0999756,0.0000000,0.0000000,90.0000000); //amt 9570(32)
    awand[ib]=CreateObject(19357,-1466.5000000,2664.8999023,824.0999756,0.0000000,0.0000000,90.0000000); //amt 9570(34)
    awand[ib]=CreateObject(19357,-1469.6999512,2664.8999023,824.0999756,0.0000000,0.0000000,90.0000000); //amt 9570(35)
    awand[ib]=CreateObject(19357,-1472.9000244,2664.8999023,824.0999756,0.0000000,0.0000000,90.0000000); //amt 9570(36)
    awand[ib]=CreateObject(19357,-1476.0999756,2664.8999023,824.0999756,0.0000000,0.0000000,90.0000000); //amt 9570(37)
    awand[ib]=CreateObject(19357,-1465.1999512,2658.3000488,824.0999756,0.0000000,0.0000000,0.0000000); //amt 9570(28)
    awand[ib]=CreateObject(19357,-1465.1999512,2655.1000977,824.0999756,0.0000000,0.0000000,0.0000000); //amt 9570(28)
    awand[ib]=CreateObject(19357,-1468.0000000,2666.5000000,824.0999756,0.0000000,0.0000000,0.0000000); //amt 9570(28)
    awand[ib]=CreateObject(19357,-1468.0000000,2672.8999023,824.0999756,0.0000000,0.0000000,0.0000000); //amt 9570(28)
    awand[ib]=CreateObject(19357,-1469.5999756,2674.3999023,824.0999756,0.0000000,0.0000000,90.0000000); //amt 9570(35)
    awand[ib]=CreateObject(19357,-1472.8000488,2674.3999023,824.0999756,0.0000000,0.0000000,90.0000000); //amt 9570(35)
    awand[ib]=CreateObject(19357,-1476.0000000,2674.3999023,824.0999756,0.0000000,0.0000000,90.0000000); //amt 9570(35)
    awand[ib]=CreateObject(19357,-1468.0000000,2679.3000488,824.0999756,0.0000000,0.0000000,0.0000000); //amt 9570(28)
    awand[ib]=CreateObject(19357,-1468.0000000,2682.5000000,824.0999756,0.0000000,0.0000000,0.0000000); //amt 9570(28)
    awand[ib]=CreateObject(19357,-1447.5999756,2660.0000000,824.0999756,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (1)
    awand[ib]=CreateObject(19357,-1450.8000488,2660.0000000,821.9000244,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (2)
    awand[ib]=CreateObject(19357,-1450.8000488,2660.0000000,826.7999878,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (3)
    awand[ib]=CreateObject(1649,-1450.8000488,2660.0000000,826.0000000,0.0000000,0.0000000,180.0000000); //object(wglasssmash) (1)
    awand[ib]=CreateObject(19357,-1453.9000244,2660.0000000,824.0000000,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (5)
    awand[ib]=CreateObject(19357,-1447.5999756,2664.8999023,824.0999756,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (6)
    awand[ib]=CreateObject(19357,-1449.0999756,2666.5000000,824.0999756,0.0000000,0.0000000,0.0000000); //object(road_sfw11) (7)
    awand[ib]=CreateObject(19357,-1449.0999756,2669.6999512,824.0999756,0.0000000,0.0000000,0.0000000); //object(road_sfw11) (8)
    awand[ib]=CreateObject(19357,-1449.0999756,2672.8999023,824.0999756,0.0000000,0.0000000,0.0000000); //object(road_sfw11) (9)
    awand[ib]=CreateObject(19357,-1450.5999756,2674.3999023,824.0999756,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (10)
    awand[ib]=CreateObject(19357,-1453.8000488,2674.3999023,824.0999756,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (11)
    awand[ib]=CreateObject(19357,-1457.0000000,2674.3999023,824.0999756,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (12)
    awand[ib]=CreateObject(19357,-1458.5000000,2672.8000488,824.0999756,0.0000000,0.0000000,0.0000000); //object(road_sfw11) (13)
    awand[ib]=CreateObject(19357,-1458.5000000,2669.6000977,824.0999756,0.0000000,0.0000000,0.0000000); //object(road_sfw11) (14)
    awand[ib]=CreateObject(19357,-1457.0999756,2660.0000000,824.0000000,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (15)
    awand[ib]=CreateObject(19357,-1453.6999512,2677.6000977,826.9000244,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (33)
    awand[ib]=CreateObject(19357,-1456.9000244,2677.6000977,824.0999756,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (28)
    awand[ib]=CreateObject(19357,-1453.6999512,2677.6000977,821.7999878,0.0000000,0.0000000,90.0000000); //object(road_sfw11) (30)
    awand[ib]=CreateObject(19357,-1452.0000000,2679.3000488,824.0999756,0.0000000,0.0000000,0.0000000); //object(road_sfw11) (31)
    awand[ib]=CreateObject(19357,-1458.5000000,2679.3000488,824.0999756,0.0000000,0.0000000,0.0000000); //object(road_sfw11) (32)
    for(new i=0; i<sizeof(awand); i++) SetObjectMaterial(awand[i],1, 5168, "lashops6_las2", "yellow2_128", 0);


    Ich bin schon alle Nummern durchgegangen hier:
    for(new i=0; i<sizeof(awand); i++) SetObjectMaterial(awand[i],1, 5168, "lashops6_las2", "yellow2_128", 0);


    Es wird einfach nix geändert :/ Hab ich was falsch gemacht?

    MfG kleinkiko

    Lust auf ein Rust Server? Dann schau doch mal HIER vorbei :)


  • Würde dir gerne helfen, ist allerdings ohne Kontext total schwer zu verstehen und sich in deine Lage zu versetzen. Vielleicht erklärst du auch etwas genauer warum es überhaupt zu einer weiteren print-Anweisung kommt? Ich sehe nur eine die dem Muster von unten entspricht.



    new awand[40], ib;


    "ib" wird deklariert und mit 0 initialisiert. Alle Objekte wandern in "awand[0]" und überschreiben sich immer gegenseitig. Deshalb wird maximal ein Objekt später geändert.

  • "ib" wird deklariert und mit 0 initialisiert. Alle Objekte wandern in "awand[0]" und überschreiben sich immer gegenseitig. Deshalb wird maximal ein Objekt später geändert.


    Und wie kann ich das dann richtig machen? Weil ich habe keine lust bei ca 40 Objekten immer oben ein new zu erstellen und dann


    awand1 = CreateObject(19398,-1452.0000000,2682.5000000,824.0999756,0.0000000,0.0000000,0.0000000);
    SetObjectMaterial(awand1,1, 5168, "lashops6_las2", "yellow2_128", 0);


    Kann man das irgendwie anderes machen?

    MfG kleinkiko

    Lust auf ein Rust Server? Dann schau doch mal HIER vorbei :)

  • seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • kleinkiko:
    Da gibt es mehrere Möglichkeiten. Du könntest dir das Leben schwer machen indem du folgendes machst:


    new SomeObjectArray[40];


    SomeObjectArray[0] = CreateObject(...
    SomeObjectArray[1] = CreateObject(...
    SomeObjectArray[2] = CreateObject(...
    ...


    Das mag natürlich niemand, ist unsauber und führt zu unwartbarem Code.


    Ich würde das so machen:


    new SomeObjectArguments[][7] = // Bin mir hier nicht ganz sicher ob das in PAWN möglich ist, also ob man die zweite Dimension eines Arrays explizit festlegen kann, ohne die erste zu bestimmen
    {
    { 19357,-1458.5000000,2666.4001465,824.0999756,0.0000000,0.0000000,0.0000000 },
    { 19358,-1452.5000000,2666.4001465,824.0999756,0.0000000,0.0000000,0.0000000 },
    { 19359,-1451.5000000,2666.4001465,824.0999756,0.0000000,0.0000000,0.0000000 }
    // Für jedes weitere Objekt fügst du hier die Koordinaten und den ganzen Shit ein, den die Funktion CreateObject erfordert
    }



    new SomeObjectArray[sizeof(SomeObjectArguments)];


    for(new i; i < sizeof(SomeObjectArray); i++) // Loop durch jedes Objekt für das du die Argumente oben eingegeben hast
    SomeObjectArray[i] = CreateObject(SomeObjectArguments[i][0], SomeObjectArguments[i][1], SomeObjectArguments[i][2], SomeObjectArguments[i][3], SomeObjectArguments[i][4], SomeObjectArguments[i][5], SomeObjectArguments[i][6]);



    @ TheBlueFireKing:
    Verstehe deine Frage leider immer noch nicht, es würde helfen wenn du den Kontext näher erklärst, wozu diese Funktion verwendet wird zum Beispiel.

    Einmal editiert, zuletzt von Mostey ()


  • Aber wo kann ich nun da die Texture festlegen? Also welche Texture die Objekte bekommen

    MfG kleinkiko

    Lust auf ein Rust Server? Dann schau doch mal HIER vorbei :)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen