[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
  • Du musst den Spieler in das Interior setzen (SetPlayerInterior), sonst siehste nix.


    Die Position wo die Kamera hinschauen soll braucht du zwingend.


    Okay, das mit dem Interior setzen, das habe ich schon gemacht..
    Kann ich vlt die Koords von der Position, wo die Kamera 'stehen' soll, einfach die x / y Achse um einen kleinen Wert erhöhen und es dann verwenden, für die Koordinate, wo der hinschauen soll?
    Es ist für mein Haussystem und ich habe leider nur die Koords, von wo der schauen soll .. :/


  • Okay, das mit dem Interior setzen, das habe ich schon gemacht..
    Kann ich vlt die Koords von der Position, wo die Kamera 'stehen' soll, einfach die x / y Achse um einen kleinen Wert erhöhen und es dann verwenden, für die Koordinate, wo der hinschauen soll?
    Es ist für mein Haussystem und ich habe leider nur die Koords, von wo der schauen soll .. :/


    Klar ist sowas möglich du kannst auch ebenfalls eine kleine Berechnung machen
    http://wiki.sa-mp.com/wiki/GetPlayerCameraFrontVector


    was sinnvoller wäre für die ausgelesenen werte einfach konstanten nehmen


    aber generel gehts nur um den Teil object_x wäre die koordinate für SetCameraLookAt


    object_x = fPX + floatmul(fVX, fScale);
    object_y = fPY + floatmul(fVY, fScale);
    object_z = fPZ + floatmul(fVZ, fScale);

  • Keine Ahnung ob ich das schon mal gefragt habe, war in letzter Zeit etwas beschaeftigt, aber wie kann ich die Positionen links und rechts neben dem Spieler herausfinden? Bin nicht gerade ein Mathecrack ( Note 5/6 )
    Danke im Voraus.


    Ich meine man müsste dazu Vektorenrechnung beherrschen, aber davon habe ich keine Ahnung.


    Dialog-Fehler


    Ich habe ein kleines Problem und zwar habe ich einen Teleport-Dialog und einen Hilfe-Dialog. Mit dem Teleport-Dialog funktioniert alles einwandfrei, aber wenn ich den Hilfe-Dialog aufrufe und dann auf "Fahrzeuge" klicke, werde ich zur ersten Position teleportiert, die im Teleport-Dialog steht. Ein kleines Video dazu:


    https://www.youtube.com/watch?v=aojLzut5jaU


    ocmd:teleport(playerid,params[])
    {
    ShowPlayerDialog(playerid,DIALOG_TELEPORT,DIALOG_STYLE_LIST,"Teleport","Blueberry\nDillimore\nGrove Street\nLos Santos Police Department\nWheel Arch Angels\nBrücke Los Santos - Flint County","Fortfahren","Abbrechen");
    return 1;
    }


    ocmd:help(playerid,params[])
    {
    ShowPlayerDialog(playerid,DIALOG_HELP,DIALOG_STYLE_LIST,"Hilfe","Fahrzeuge\nEinstellungen\nSonstiges","Bestätigen","Schließen");
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_TELEPORT)
    {
    if(response)
    {
    if(listitem==0)
    {
    // Blueberry
    SetPlayerPos(playerid, 271.4776,-63.6031,1.5781);
    SetPlayerFacingAngle(playerid,180.7952);
    SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich nach Blueberry teleportiert.");
    }
    if(listitem==1)
    {
    // Dillimore
    SetPlayerPos(playerid, 630.9876,-571.7619,16.3359);
    SetPlayerFacingAngle(playerid,269.2972);
    SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich nach Dillimore teleportiert.");
    }
    if(listitem==2)
    {
    // Grove Street
    SetPlayerPos(playerid, 2495.3125,-1687.0536,13.5151);
    SetPlayerFacingAngle(playerid,357.9294);
    SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich zur Grove Street teleportiert.");
    }
    if(listitem==3)
    {
    // LSPD
    SetPlayerPos(playerid, 1545.2042,-1675.6261,13.5599);
    SetPlayerFacingAngle(playerid,90.3408);
    SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich zum Los Santos Police Department teleportiert.");
    }
    if(listitem==4)
    {
    // Wheel Arch Angels, San Fierro
    SetPlayerPos(playerid, -2713.3762,223.8495,4.3281);
    SetPlayerFacingAngle(playerid,267.6334);
    SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich zur Wheel Arch Angels-Werkstatt teleportiert.");
    }
    if(listitem==5)
    {
    // Brücke von Los Santos und Flint County
    SetPlayerPos(playerid, 65.1056,-1533.8071,5.1562);
    SetPlayerFacingAngle(playerid,81.1712);
    SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich zur Brücke von Los Santos und Flint County teleportiert.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast den Teleportationsvorgang abgebrochen.");
    }
    return 1;
    }
    if(dialogid==DIALOG_HELP)
    {
    if(response)
    {
    if(listitem==0)
    {
    // Fahrzeuge
    SendClientMessage(playerid,COLOR_YELLOW,"---------------[ Fahrzeuge ]---------------");
    SendClientMessage(playerid,COLOR_WHITE,"Fahrzeug erstellen: /vehicle [ID]");
    SendClientMessage(playerid,COLOR_WHITE,"Fahrzeug lackieren: /vehiclecolor [ID] [ID]");
    SendClientMessage(playerid,COLOR_YELLOW,"---------------[ Fahrzeuge ]---------------");
    }
    if(listitem==1)
    {
    // Einstellungen
    SendClientMessage(playerid,COLOR_YELLOW,"-------------[ Einstellungen ]-------------");
    SendClientMessage(playerid,COLOR_WHITE,"Skin wechseln: /skin [ID]");
    SendClientMessage(playerid,COLOR_WHITE,"Waffe erhalten: /weapon [ID]");
    SendClientMessage(playerid,COLOR_WHITE,"Kampfstil ändern: /fightstyle [ID]");
    SendClientMessage(playerid,COLOR_WHITE,"Zeit ändern: /time [Stunde] [Minute]");
    SendClientMessage(playerid,COLOR_WHITE,"Teleportieren: /teleport");
    SendClientMessage(playerid,COLOR_WHITE,"Wetter ändern: /weather [ID]");
    SendClientMessage(playerid,COLOR_YELLOW,"-------------[ Einstellungen ]-------------");
    }
    if(listitem==2)
    {
    // Sonstiges
    SendClientMessage(playerid,COLOR_YELLOW,"---------------[ Sonstiges ]---------------");
    SendClientMessage(playerid,COLOR_WHITE,"Private Nachricht senden: /pm [Empfänger] [Nachricht]");
    SendClientMessage(playerid,COLOR_WHITE,"Straßensperre erstellen: /roadblock [Spieler]");
    SendClientMessage(playerid,COLOR_WHITE,"Server neustarten: /restart");
    SendClientMessage(playerid,COLOR_YELLOW,"---------------[ Sonstiges ]---------------");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_WHITE,"Du hast das Menü geschlossen.");
    }
    return 1;
    }
    return 1;
    }


    Ich hoffe jemand kann mir da behilflich sein. :)


    Mit freundlichen Grüßen,
    Crusard

  • Da haben wir's doch. ;)
    Folgender Ablauf:
    Beide Dialoge haben die selbe Dialog ID.


    Der Compiler läuft immer von oben nach unten und da der TP Dialog zuerst ausgeführt wird, da eben die ID's identisch sind und der Ausdruck dann eben auch wahr ist, wird er teleportiert. Der Callback wird dann mit "return 1" abgebrochen.


    Einfach das zweite Dialog Define zu einer 2 machen.
    Crusard:

  • ocmd:teilnehmer(playerid)
    {
    new string[128];
    if(GetPVarInt(playerid,"Mitspieler") == 1)
    {
    SendClientMessage(playerid, 0x00FFFFFF, "**Fraktions - Mitglieder Online**");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 40, " *Teilnehmer: %s", sendername);
    SendClientMessage(playerid, 0x0005FFFF, string);
    }
    }
    return 1;
    }


    Funktioniert nicht so ganz


    Variable wird so abgeseichert:
    SetPVarInt(playerid,"Mitspieler", "1");

  • SetPVarInt(playerid,"Mitspieler", "1");


    zu


    SetPVarInt(playerid,"Mitspieler", 1);


    1 ist kein String, daher ohne " "


    EDIT:

    ocmd:teilnehmer(playerid,params[]){
    new string[144],sendername[MAX_PLAYER_NAME];
    if(!GetPVarInt(playerid,"Mitspieler"))return 1;
    SendClientMessage(playerid,0x00FFFFFF,"**Fraktions - Mitglieder Online **");
    for(new i;i<GetMaxPlayers();i++){
    GetPlayerName(i,sendername,MAX_PLAYER_NAME);
    format(string,144,"%s\n*Teilnehmer: %s",string,sendername),SendClientMessage(playerid,0x0005FFFF,string);
    }
    return 1;
    }

  • ocmd:teilnehmer(playerid)
    {
    new string [32],sendername[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if (! IsPlayerConnected (i)) continue;
    else if(! GetPVarInt (i,"Teilnehmer")) continue;
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, 32, " *Teilnehmer: %s", sendername);
    SendClientMessage(playerid, 0x0005FFFF, string);
    }
    return 1;
    }


    Da würde er jetzt alle Teilnehmer aufzählen. .


    Das wolltest du doch, oder?


    #Handy

  • Hat eventuell jemand die Einfahrtkoordinaten von San Andreas ? Also wenn man in Ls reinfährt, Sf, Lv. Möchte ungerne alles mühsam per Hand raussuchen^^

    {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
    {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
    {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
    {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
    {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
    {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
    {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
    {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
    {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}

    Quelle: http://pastebin.com/f68e1a6ad