[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
  • Habe das System Jetzt so und es ist immernoch wie oben beschrieben

    Keine Ahnung, ich bin aktuell zu faul die Funktion selbst zu testen.


    Kannst ja auch einfach sowas machen:


    C
    const Float:distance=5.0; //5m vor dem Blitzer wird er geblitzt
    new Float:x = Blitzer[id][x] + distance * floatsin(-Blitzer[id][rotation], degrees);
    new Float:y = Blitzer[id][y] + distance * floatcos(-Blitzer[id][rotation], degrees);
    
    
    if(IsPlayerInRangeOfPoint(playerid,5.0,x,y,Blitzer[id][z]))
    {
        //Blitz
    }

    @Allrounder18
    Ich hab nach mehr defines gefragt gehabt..lies nochmal genau..

    ast2ufdyxkb1.png


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

  • Ich hab ne Lösung gefunden, wie es funktioniert.


    Jedoch möchte ich nun haben, dass wenn die Zeile zu lange ist ein Umbruch kommt und in der näcsten Zeile der Text weitergeht.


    So habe ich es versucht, jedoch kommt egal was ich schreibe nur ...

  • Hier die fehlenden Defines

    Deine Defines sind falsch.



    #define COLOR_FADE1 0x505050FF
    #define COLOR_FADE2 0x50505095
    #define COLOR_FADE3 0x50505060
    #define COLOR_FADE4 0x50505032


    Du veränderst nur den Alpha_Wert die Farbe selbst bleibt gleich.


    Wie soll sich da also was ändern? ^^


    Musst die Farben selbst heller bzw dunkler machen, so wie du magst.

    ast2ufdyxkb1.png


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

  • @Kaliber wie meint du das? Ich hab oben was reinedtiert.

    Das hat nichts mit der Funktion zu tuen, die funktioniert einwandfrei.


    Der Punkt ist, du nutzt in den Defines immer die selbe Farbe...


    Überall nur 0x505050


    R = 50
    G = 50
    B = 50


    Nur die Alpha Werte änderst du, aber die haben keine Auswirkungen auf die Farbe.


    Also ändere die R, G oder B Werte...


    Schreib also zum Beispiel bei COLOR_FADE4B0B0B0 dann ist diese wesentlich heller.


    Kannst ja mal mit den Werten rumspielen: https://html-color-codes.info/old/colorpicker.html

    ast2ufdyxkb1.png


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

  • Die Farben zeigt er mir ja an aber ich mein folgendes

    Jedoch möchte ich nun haben, dass wenn die Zeile zu lange ist ein Umbruch kommt und in der näcsten Zeile der Text weitergeht.


    So habe ich es versucht, jedoch kommt egal was ich schreibe nur ...

  • Wieso machst du so einen Quatsch?


    1. Hast du wieder alle Funktionen zerstört und alles darein gepackt.


    2. Hast du die Logik zerstört und machst da kompletten Blödsinn.


    Wieso nutzt du nicht wie vorher die Funktion die du schon hattest...


    Da war doch alles korrekt, bis auf die Farben, aber das lag an deinen defines...

    ast2ufdyxkb1.png


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

  • Was meinst du mit Quatsch?


    1. Hab ich es so gemacht, weil ich mit der Funktion ja nur genau die Nachricht machen kann udn ich dis aber auch bei /me machen mlchte mt violettfarben


    2. Was genau meinst du?


    Edit: ginge s folgendermaßen?


    Code
    if(distance < CHAT_RADIUS / CHAT_FADES)
            {
                chat_color = COLOR_CHAT;
                chat_color2 = VIOLETT;
            }

    Color_Chat für den Chat und VIOLETT für die /me?

  • 2. Was genau meinst du?

    Na, was glaubst du warum der Code nicht funktioniert?


    Weil die Code Logik zerstört ist.


    Die Funktion SendClientToChat hingegen funktioniert, also nutze sie doch einfach.



    mt violettfarben

    Dann ändern sich doch nur die Farben.


    Ja, klar kannst du es so machen, wie in deinem Beispiel :)


    Es ginge auch noch anders, z.B. mit intelligentem shiften.


    Da gibt es ein schönes Include: https://forum.sa-mp.com/showthread.php?p=4055845


    Und sogar ein Beispiel für dein Problem: https://forum.sa-mp.com/showpo…a07&p=4079880&postcount=7


    Aber kannst du ja entscheiden xD

    ast2ufdyxkb1.png


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

  • Wenn ich es mit der Funktion mache, dann is der name in der erstenzeile und der text weiß und die 2. zeile wo ur text steht in den graufarben. Was mus ich da ändern, damit name in grufarben und der rest alles weiß ist??

  • C
    format(text[0], 152, "{FFFFFF}%s...", text[0]);
    	    format(text[1], 152, "...%s", text[1]);

    Schreib das mal so:



    format(text[0], 152, "%s...", text[0]);
    format(text[1], 152, "{FFFFFF}...%s", text[1]);


    Musst halt noch ne Abfrage einbauen, ob das bei dem ME auch so sein soll oder nicht.

    ast2ufdyxkb1.png


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

  • danke, funktioniert.
    Was muss ich bei SendClientToChat ändern, damit ich SendRangeColorMessage( für verschiedenen Chats mit verschiedenen Faben nehmen kann? zb wie oben geschrieben der chat in grautänen und /me in violetttönen?


    Edit: bei /me solls wieder so sein



    Code
    format(text[0], 152, "%s...", text[0]);
    format(text[1], 152, "...%s", text[1]);

    Edit: Problem hat sich erledigt.


    Was muss ich machen wenn ich ein % schreibe, dass anstatt von # das % kommt im Text?
    Muss ich dass dann zu OnPlayer Text geben?


    @Kaliber

  • Hey,
    vielleicht kann mir jemand helfen ?


    Ich möchte, dass wenn das Ordnungsamt ein Fahrzeug abgeschleppt hat, dass der Spieler dann eine Nachricht bekommt das sein Fahrzeug abgeschleppt wurde..
    Wie stelle ich das an ?


    ocmd:abschleppen(playerid,params[])
    {
    if(pInfo[playerid][fraktion]!=4)return noaccess
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,GRAU,"Du bist nicht in einem Towtruck.");
    if(!IsPlayerInRangeOfPoint(playerid,200.0,2839.6499,965.5730,10.7500))return SendClientMessage(playerid,GRAU,"Du bist nicht an der Ordnungsamt Base.");
    new vid;
    if(sscanf(params, "d", vid))return SendClientMessage(playerid, WEIß,"Verwendung: /abschleppen (ID) - /dl Zeigt die ID's");


    if(GetVehicleTrailer(GetPlayerVehicleID(playerid))!=vid)return SendClientMessage(playerid, GRAU, "Das Fahrzeug ist nicht getowt.");
    if(IsFrakCar[vid]==1)return SendClientMessage(playerid, GRAU, "Fahrzeuge einer Fraktion können nicht abgeschleppt werden.");


    new count=0;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!PlayerOnline(i))continue;
    if(vid==PlayerCar[i][slot1])
    {
    CarAbgeschleppt[playerid][0]=1;
    if(HatNeon[vid]!=0)
    {
    DestroyObject(Neon[vid][0]);
    DestroyObject(Neon[vid][1]);
    }
    DestroyVehicle(vid);
    PlayerCar[i][slot1]=INVALID_VEHICLE_ID;
    pInfo[playerid][payday]+=1000;
    count++;
    break;
    }
    else if(vid==PlayerCar[i][slot2])
    {
    CarAbgeschleppt[playerid][1]=1;
    if(HatNeon[vid]!=0)
    {
    DestroyObject(Neon[vid][0]);
    DestroyObject(Neon[vid][1]);
    }
    DestroyVehicle(vid);
    PlayerCar[i][slot2]=INVALID_VEHICLE_ID;
    pInfo[playerid][payday]+=1000;
    count++;
    break;
    }
    else if(vid==PlayerCar[i][slot3])
    {
    CarAbgeschleppt[playerid][2]=1;
    if(HatNeon[vid]!=0)
    {
    DestroyObject(Neon[vid][0]);
    DestroyObject(Neon[vid][1]);
    }
    DestroyVehicle(vid);
    PlayerCar[i][slot3]=INVALID_VEHICLE_ID;
    pInfo[playerid][payday]+=1000;
    count++;
    break;
    }
    }
    if(count==0)return SendClientMessage(playerid, GRAU, "Du kannst dieses Fahrzeug nicht abschleppen.");
    SendClientMessage(playerid,HBLAU,"Du hast das Fahrzeug abgeschleppt. +1.000$ werden dir am PayDay gutgeschrieben.");

  • C
    new string1[300];
    	format(string,sizeof(string),"Gehalt(Brutto): {grün}+$%d{FFFFFF} Steuern: {rot}-$%d",pInfo[playerid][pGehalt],pInfo[playerid][pSteuern]);
    	SendClientMessage(playerid,-1,string1);

    Ich habe jetzt einmal in einer SendClientMessage Gehalt und Steuern als Beispiel jetzt genommen
    Wie frage ich ab ob die Zahl über 0 oder unter 0 ist?


    Ist der Gehalt gleich 0 soll er rot angezeigt werden sind die Steuern dann auch gleich 0 soll der Wert grün angezeigt werden.
    Ist der Gehalt über 0 soll er grün angezeigt werden sind die Steuern dann über 0 soll es rot angezeigt werden.


    Hier sind 2 abfragen, weil es auch andere Steuern gibt das heißt, dass wenn Gehalt 0 ist die Steuern oft nicht 0 sind.
    Ist mir grade ein Rätsel, aufgrund der 2 Abfragen

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Spontan würden mir da zwei Möglichkeiten einfallen:


    • Ternärer Operator. Die Syntax ist ungefähr BEDINGUNG ? trifft zu : trifft nicht zu . Demnach würde es dann so aussehen (pInfo[playerid][pGehalt] == 0 ? ("rot") : ("grün"))
    • Altbekannter weg, in dem du die Farbe vor dem format bereits ermittelst:

      Code
      new farbCode[8];
      if(pInfo[playerid][pGehalt] == 0} format(farbCode, 8, "rot"); 
      else format(farbCode, 8, "grün");

    Beides jeweils analog zu pSteuern.

  • Danke dir @Douq
    Jetzt hätte ich nur das Problem, wie ich dies jetzt im String anzeigen lasse.
    So wäre es nicht machbar (oder?), wie soll ich es stattdessen machen?


    Außerdem erscheinen hier Errors, die ich mir nicht erklären kann.

    C
    new GehaltFarbe[8];
    	if(pInfo[playerid][pGehalt] == 0} format(GehaltFarbe, 8, "+rot");
    	else format(GehaltFarbe, 8, "+grün");
    	new Steuernfarbe[8];
    	if(pInfo[playerid][pGehalt] == 0} format(Steuernfarbe, 8, "+rot");
    	else format(Steuernfarbe, 8, "+grün");
    	new string1[300];
    	format(string1,sizeof(string1),"Gehalt: %d, Steuern: &d",GehaltFarbe, Steuernfarbe);
        SendClientMessage(playerid,-1,string1);


    Code
    (1200) : error 001: expected token: ")", but found "}"
    (1200) : error 029: invalid expression, assumed zero
    (1201) : error 029: invalid expression, assumed zero
    (1203) : error 001: expected token: ")", but found "}"
    (1203) : error 029: invalid expression, assumed zero
    (1204) : error 029: invalid expression, assumed zero

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Danke dir @Douq
    Jetzt hätte ich nur das Problem, wie ich dies jetzt im String anzeigen lasse.
    So wäre es nicht machbar (oder?), wie soll ich es stattdessen machen?


    Außerdem erscheinen hier Errors, die ich mir nicht erklären kann.

    C
    new GehaltFarbe[8];
    	if(pInfo[playerid][pGehalt] == 0} format(GehaltFarbe, 8, "+rot");
    	else format(GehaltFarbe, 8, "+grün");
    	new Steuernfarbe[8];
    	if(pInfo[playerid][pGehalt] == 0} format(Steuernfarbe, 8, "+rot");
    	else format(Steuernfarbe, 8, "+grün");
    	new string1[300];
    	format(string1,sizeof(string1),"Gehalt: %d, Steuern: &d",GehaltFarbe, Steuernfarbe);
        SendClientMessage(playerid,-1,string1);


    Code
    (1200) : error 001: expected token: ")", but found "}"
    (1200) : error 029: invalid expression, assumed zero
    (1201) : error 029: invalid expression, assumed zero
    (1203) : error 001: expected token: ")", but found "}"
    (1203) : error 029: invalid expression, assumed zero
    (1204) : error 029: invalid expression, assumed zero



    Code
    new GehaltFarbe[8];
    	if(pInfo[playerid][pGehalt] == 0) format(GehaltFarbe, 8, "+rot");
    	else format(GehaltFarbe, 8, "+grün");
    	new Steuernfarbe[8];
    	if(pInfo[playerid][pGehalt] == 0) format(Steuernfarbe, 8, "+rot");
    	else format(Steuernfarbe, 8, "+grün");
    	new string1[300];
    	format(string1,sizeof(string1),"Gehalt: %d, Steuern: &d",GehaltFarbe, Steuernfarbe);
        SendClientMessage(playerid,-1,string1);


    Versuchs mal so du hast die falschen Klammern verwendet.

  • Was muss ich machen, wenn ich bei /admins angezeigt bekommen möchte , das der Admin Duty ist
    Also folgendermaßen Projektleitung Allrounder18 Im Dienst. So sieht es im Dialog aus.
    Ich habe wenn ich aduty bin ein [ARP] vor dem Namen stehn, dadurch kennt mein System dass ich online bin. Wie kann ich das fixen?



    Code
    stock GetPlayerIdFromName(const pName[])
    {
    	new playerid = INVALID_PLAYER_ID;
    	sscanf(pName, "u", playerid);
    	return playerid;
    }