[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
  • 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;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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

  • if(dialogid == DIALOG_SHOP)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: if(GetPlayerMoney(playerid) <= 5000) return SendClientMessage(playerid, 0xAA3333AA, "Du hast nicht genug Geld um die Deagle zu kaufen!"); GivePlayerWeapon(playerid,24,500);
    case 1: return if(GetPlayerMoney(playerid) <= 1000)SendClientMessage(playerid, 0xAA3333AA, "Du hast nicht genug Geld um die Deagle zu kaufen!"); SetPlayerArmour(playerid,100);
    }
    }
    return 1;
    }


    return 0;
    }


    Kann mir jemand sagen wie ich das hier machen könnte das keine Errors kommen und alles stimmt:
    case 0: if(GetPlayerMoney(playerid) <= 5000) return SendClientMessage(playerid, 0xAA3333AA, "Du hast nicht genug Geld um die Deagle zu kaufen!"); GivePlayerWeapon(playerid,24,500);
    case 1: return if(GetPlayerMoney(playerid) <= 1000)SendClientMessage(playerid, 0xAA3333AA, "Du hast nicht genug Geld um die Deagle zu kaufen!"); SetPlayerArmour(playerid,100);

  • case 0: { if(GetPlayerMoney(playerid) < 5000) return SendClientMessage(playerid, 0xAA3333AA, "Du hast nicht genug Geld um die Deagle zu kaufen!"); else return GivePlayerWeapon(playerid,24,500);}
    case 1: { if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xAA3333AA, "Du hast nicht genug Geld um die Deagle zu kaufen!"); else return SetPlayerArmour(playerid,100);}

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