[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
  • Jeffry:


    Ich habe 2 Befehle erstellt mit denen man sich teleportieren kann, meine Frage ist ob es da irgendwelche Unterschiede gibt außer das einer von beiden umfangreicher ist?


    Version 1:



    CMD:setloc(playerid, params[])
    {
    new Float:X, Float:Y, Float:Z;
    if(sscanf(params, "fff", X, Y, Z)) return SendClientMessage(playerid, Green, "Usage: /setloc [Coor:X] [Coor:Y] [Coor:Z]");
    SendClientMessage(playerid, Green, "You have been teleported");
    SetPlayerPos(playerid, X,Y,Z);
    return 1;
    }


    Man teleportiert sich mit der X, Y, Z & der Interior ID in Interiors ein.



    2.


    Es öffnet sich eine Liste mit bereits vorgefertigten Positionen, aber die selben die ich bei /setloc benutzen würde.


    Sind bei den beiden Befehlen die Virtuelle Welt / Interior gleich?



    Sieht übrigends so aus:



    case 0: SetPlayerPos(playerid,1922.3157,-2540.7034,13.5469); //LS Airport (Nehmen wir an das ist ein Interior..


    EDIT:


    Hat sich erledigt, merke das ich die Interior Koordinaten gar nicht einfach so in meinen Befehl einbauen kann, kannst mir sagen wie ich das mache?
    Also in meinem Dialog-Style List Teleport Befehl vordefinierte Teleports einbaue mit einer X, Y, Z und Interior ID? So wie bei /setloc halt nur vorgegeben


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Hat sich erledigt, merke das ich die Interior Koordinaten gar nicht einfach so in meinen Befehl einbauen kann, kannst mir sagen wie ich das mache?
    Also in meinem Dialog-Style List Teleport Befehl vordefinierte Teleports einbaue mit einer X, Y, Z und Interior ID? So wie bei /setloc halt nur vorgegeben


    Kannst du das irgendwie mit dem Code den du schon hast erklären, ich weiß nämlich nicht, was du vor hast. Erstelle gegebenenfalls einen neuen Thread, falls es viel Code ist, da das hier dann nicht so übersichtlich ist, falls mehr zu machen ist.

  • EDIT:


    Hat sich von selbst erklärt, haben nur die Kommas gefehlt.


    Kennt jemand einen Weg diese ganze Liste http://files.sa-mp.com/interiors.txt , mit Kommas zu versehen, also schnell und zügig?


    Beispiel:


    0 11 2003.1178 1015.1948 33.008 351.5789 Four Dragons' Managerial Suite ;


    Zu:


    SetPlayerPos(playerid, 2003.1178,1015.1948,33.008); (Halt mit Kommas) ?


    Mit freundlichen Grüßen
    JustMe.77 8)

    Einmal editiert, zuletzt von JustMe.77 ()

  • SetPlayerPos(playerid, 2003.1178 1015.1948 33.008);
    Zu
    SetPlayerPos(playerid, 2003.1178, 1015.1948, 33.008);


    Der Rest sollte dann passen, zu dem was du vor hast.



    EDIT:
    STRG+H, dann Leerzeichen mit Komma ersetzen.
    Oder in eine Excel Tabelle importieren, und dann nur die drei Koordinaten Spalten raus kopieren, und dort den TAB mit Komma ersetzen.

  • Jeffry:


    Das mit der Excel Tabelle versuche ich gleich, dennoch habe ich ein Problem:



    Habe so die Koordinaten in meiner Liste:



    case 1:
    {
    SetPlayerPos(playerid, 770.8033, -0.7033, 1000.7267);
    SetPlayerInterior(playerid, 5);
    SendClientMessage(playerid, 0x00FF78FF, "You teleported yourself to {FF0041} Ganton Gym");
    return 1;
    }



    Teleportiere ich mich. Ich sehe nur weiß



    Habe testweise noch ein /setloc Befehl, wo ich die X, Y & Z Koordinate + Interior eingebe, dort funktionierts.


    /setloc 770.8033 -0.7033 1000.7267 5

    Halt genau das selbe nur ohne Kommas..


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Jeffry:


    Ich teleportiere mich mit beiden.


    Mit /setloc 770.8033 -0.7033 1000.7267 5 funktioniert es.


    Mit der 2. Variante werde ich teleportiert, sehe aber nur weiß..


    Aber ich mache mal ein relog, vielleicht hilft es ja..


    E: Hat nicht geholfen, sieht nach wie vor so aus:



    case 1:
    {
    SetPlayerPos(playerid, 770.8033,-0.7033,1000.7267);
    SetPlayerInterior(playerid, 5);
    SendClientMessage(playerid, 0xFEFEFEFF, "Succesfully teleported to{0069FF} ''Ganton Gym''.");
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

    Einmal editiert, zuletzt von JustMe.77 ()

  • Jeffry:


    Welche Zeilen soll ich damit ersetzen? Ich glaube du verstehst mich falsch.


    Der /setloc Befehl funktioniert einwandfrei. Ich habe noch ein /tpmenu Befehl womit sich eine Liste mit 145 Interiors öffnet, wähle ich den Teleport mit dem Koordinaten die du oben in deinem Beitrag hast werde ich teleportiert, aber ich kann das Interior nicht erkennen bzw. sehe nur weiß.


    Aber es sind genau die selben Koordinaten/InteriorID wie beim /setloc Befehl.
    Ich habe ebenfalls mein Freund Slice gefragt ob er dort ein Fehler sieht, er meinte ich sollte mich teleportieren und /interior machen und schauen ob ich im richtigen Interior bin.


    Edit:
    t
    Habe es gerade gemacht, bin im Interior 5 so wie es in der Liste steht. Da muss ein Fehler in den Koordinaten liegen, doch der einzige Unterschied zwischen beiden Befehlen ist das ich bei /setloc keine Kommas benutze, und bei SetPlayerPos eben doch..


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Die zwei/drei (falls mit Nachricht) Zeilen:
    SetPlayerPos(playerid, 770.8033,-0.7033,1000.7267);
    SetPlayerInterior(playerid, 5);


    zu:
    OnPlayerCommandText(playerid, "/setloc 770.8033 -0.7033 1000.7267 5");


    Wenn es mit dem Befehl geht, müsste es ja so klappen.
    Wenn nicht, dann kannst du ja mal /save und /interior machen, ob bei /save die gleichen Koordinaten stehen.

  • Hey,


    ich habe das hier geskriptet:
    ocmd:dienstmarke(playerid,params[]){
    new pID, jtext[256];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,GELB,"Tippe: /dienstmarke [ID]");
    if(PlayerInfo[playerid][pMember] == 1) { jtext = "Los Santos Police Department"; }
    else if(PlayerInfo[playerid][pMember] == 2) { jtext = "Federal Bureau of Investigation"; }
    else if(PlayerInfo[playerid][pMember] == 3) { jtext = "San Andreas Army"; }
    else if(PlayerInfo[playerid][pMember] == 22) { jtext = "Special Weapons and Tactics"; }
    else if(PlayerInfo[playerid][pMember] == 24) { jtext = "Ordnungsamt"; }
    else if(PlayerInfo[playerid][pMember] == 4) { jtext = "Sanitäter"; }
    else { jtext = "None"; }
    new string[256], sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string,144," [Dienstmarke - %s] ",sendername);
    format(string,144," Behörde: %s ",jtext);
    format(string,144," Dienstgrad: %i ",PlayerInfo[playerid][pRank]);
    format(string,144,"Dieser Dienstausweiß wurde vom Staat San Andreas ausgestellt.");
    format(string,144,"Und ist ab Dienstantritt gültig.");//Das wird mir angezeigt alles andere nciht
    SendClientMessage(pID,COLOR_GRAD1,string);
    return 1;
    }


    Doch er zeigt mir nur die letzte Message an.

  • HEy,


    was ist falsch?
    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1) { jtext = "Los Santos Police Department"; }
    {
    if(PlayerInfo[playerid][pRank] == 12) { dtext = "Leitender Polizeidirektor"; }
    else if(PlayerInfo[playerid][pRank] == 11) { dtext = "Polizeidirektor"; }
    else if(PlayerInfo[playerid][pRank] == 10) { dtext = "Polizeioberrat"; }
    else if(PlayerInfo[playerid][pRank] == 9) { dtext = "Polizeirat"; }
    else if(PlayerInfo[playerid][pRank] == 8) { dtext = "Erster Polizeihauptkommissar"; }
    else if(PlayerInfo[playerid][pRank] == 7) { dtext = "Polizeihauptkommissar"; }
    else if(PlayerInfo[playerid][pRank] == 6) { dtext = "Polizeioberkommissar"; }
    else if(PlayerInfo[playerid][pRank] == 5) { dtext = "Polizeikommissar"; }
    else if(PlayerInfo[playerid][pRank] == 4) { dtext = "Polizeihauptmeister"; }
    else if(PlayerInfo[playerid][pRank] == 3) { dtext = "Polizeiobermeister"; }
    else if(PlayerInfo[playerid][pRank] == 2) { dtext = "Polizeimeister"; }
    else if(PlayerInfo[playerid][pRank] == 1) { dtext = "Polizeimeisteranwärter"; }
    }

  • Versuche es so:
    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
    {
    jtext = "Los Santos Police Department";
    if(PlayerInfo[playerid][pRank] == 12) { dtext = "Leitender Polizeidirektor"; }
    else if(PlayerInfo[playerid][pRank] == 11) { dtext = "Polizeidirektor"; }
    else if(PlayerInfo[playerid][pRank] == 10) { dtext = "Polizeioberrat"; }
    else if(PlayerInfo[playerid][pRank] == 9) { dtext = "Polizeirat"; }
    else if(PlayerInfo[playerid][pRank] == 8) { dtext = "Erster Polizeihauptkommissar"; }
    else if(PlayerInfo[playerid][pRank] == 7) { dtext = "Polizeihauptkommissar"; }
    else if(PlayerInfo[playerid][pRank] == 6) { dtext = "Polizeioberkommissar"; }
    else if(PlayerInfo[playerid][pRank] == 5) { dtext = "Polizeikommissar"; }
    else if(PlayerInfo[playerid][pRank] == 4) { dtext = "Polizeihauptmeister"; }
    else if(PlayerInfo[playerid][pRank] == 3) { dtext = "Polizeiobermeister"; }
    else if(PlayerInfo[playerid][pRank] == 2) { dtext = "Polizeimeister"; }
    else if(PlayerInfo[playerid][pRank] == 1) { dtext = "Polizeimeisteranwärter"; }
    }
    Falls das nicht geht, poste mehr vom Code.