[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
  • Ich pushe das mal weil ich immer noch keine Lösung gefunden habe

    Mach das am Besten zu einer Funktion:


    C
    stock GivePlayerHealth(playerid, Float:add)
    {
        new Float:h;
        GetPlayerHealth(playerid, h);
        return SetPlayerHealth(playerid, h+add);
    }
    
    
    //Nutzung dann einfach:
    GivePlayerHealth(playerid, 50.0);

    Mal kurz eine frage...

    Du hast aber keine Plugins in die Server.cfg eingetragen und es scheint, dass ein paar c++ redistributable fehlen :)

    Weiß Jemand warum ?

    Timer sind unpräzise. Es kann gut sein, dass der Timer eig viel länger braucht.
    Dafür gibt es einen TimerFix oder stell die Animationszeit einfach bissl höher :)

    ast2ufdyxkb1.png


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

  • Habe gerade iwie ein Kleines Problem.


    Ich habe ein System wo ich mit Float Daten Arbeite aber das Multiplizieren Funktioniert nicht.
    Bei dem Preis Kommt 0 Raus aber wieso ?

    Code
    new Fichte = 1,
    	Pappel = 1,
    	Tanne = 1,
    	Eiche = 1,
    	Buche = 1;
    new Float:hf_q1 = 0.0,
    	Float:hf_q2 = 0.25,
    	Float:hf_q3 = 0.5,
    	Float:hf_q4 = 0.75,
    	Float:hf_q5 = 1.0;
  • Habe gerade iwie ein Kleines Problem.

    Nutze doch Arrays, damit kannst du das viel einfacher alles machen:



    Und dann schau mal aufs print :)

    ast2ufdyxkb1.png


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

  • C
    printf("%.02f * %.02f = %.02f",hf_q[quali],holzTyp[typ-1],hf_q[quali]*holzTyp[typ-1]);
    
    
    return hf_q[quali]*holzTyp[typ-1];

    Schreibs mal nur so.

    ast2ufdyxkb1.png


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

  • Okay, deklarier es mal so:



    C
    new Float:holzTyp[] = {
    	1.0, //Fichte
    	1.0, //Pappel
    	1.0, //Tanne
    	1.0, //Eiche
    	1.0 //Buche
    };

    Dann müsste es gehen :)

    ast2ufdyxkb1.png


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

  • Hallo!


    Ich möchte folgenden Befehl erstellen, damit nur ein bestimmter Rang die User nur zum Helfer machen kann.
    Wie kan ich das lösen?



    ocmd:makehelfer(playerid, params[])
    {
    #pragma unused params
    if(Eingeloggt[playerid] == 0)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");
    new pID, adminid, string[128];
    if(IsPlayerAdmin(playerid) || isPlayerAnAdmin(playerid,6))
    {
    if(sscanf(params, "ui", pID, adminid))return SendClientMessage(playerid, GRAU, "Benutze /makeadmin [SpielerID/Name] [Teamrang]");
    if(IsPlayerNPC(pID))return 1;
    if(!Eingeloggt[pID])return SendClientMessage(playerid, GRAU, "Dieser Spieler ist nicht eingeloggt!");
    if(SpielerDaten[pID][pIntro] < 1)return SendClientMessage(playerid, GRAU, "Der Spieler ist noch im Tutorial.");
    if(adminid == 0){
    format(string, sizeof(string), "Du hast %s aus dem Teamposten %s entlassen", SpielerDaten[pID][pName], GetAdminRangName(pID));
    SendClientMessage(playerid, BLAU, string);
    format(string, sizeof(string), "%s hat dich aus dem Team entlassen!", SpielerDaten[playerid][pName]);
    SendClientMessage(pID, BLAU, string);
    format(string, sizeof(string), "AdmCMD: %s hat %s aus dem Team entlassen!", SpielerDaten[playerid][pName], SpielerDaten[pID][pName]);
    SendAdminMessage(ADMCMD, string);
    SpielerDaten[pID][pAdmin] = 0;
    SpielerSpeichern(pID);
    return 1;
    }
    if(adminid < 1 || adminid > MAX_ADMIN)return SendClientMessage(playerid, GRAU, "Dieser Adminrang existriert nicht!");
    SpielerDaten[pID][pAdmin] = adminid;
    format(string, sizeof(string), "Du hast %s den Teamrang %s gegeben", SpielerDaten[pID][pName], GetAdminRangName(pID));
    SendClientMessage(playerid, BLAU, string);
    format(string, sizeof(string), "* %s hat dir den Teamrang %s gegeben", SpielerDaten[playerid][pName], GetAdminRangName(pID));
    SendClientMessage(pID, BLAU, string);
    format(string, sizeof(string), "AdmCMD: %s hat %s zum %s ernannt.", SpielerDaten[playerid][pName], SpielerDaten[pID][pName], GetAdminRangName(pID));
    SendAdminMessage(ADMCMD, string);
    //SpawnPlayerEx(pID);
    SpielerSpeichern(pID);
    return 1;
    }
    else {SendClientMessage(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl.");}
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Danke, aber wie mach ich es, das der Admin Rang einen Spieler nur Rang 1 also Helfer geben kann?

    Was meinst du jetzt genau?


    Ein Adminlevel rang 1er soll einem Spieler nur Rang 1 geben können?
    Und Adminlevel rang 2 nur Rang 2 oder wie?

    ast2ufdyxkb1.png


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

  • Habe dann eine Mülltonne hingestellt die dann ca 170 entsprach und siehe da es Funktioniert

    Ich verstehe nicht genau, was du damit meinst, aber gut, dass es jetzt klappt!



    Weiß Jemand warum ?

    Lief die Animation zu dem Zeitpunkt dann schon die 4,7 Sekunden? Zum Teil laufen so kurze Timer etwas langsamer in Summe, sodass das am Ende eventuell auch mal eine Sekunde ausmachen kann.




    Das ist mir schon klar, aber wie frage ich ab das der "Helferverwalter" dem Spieler nur Rang 1 also Helfer geben kann und keine anderen Ränge? Was muss ich da an meinem Code ändern?

    if(IsPlayerAdmin(playerid) || isPlayerAnAdmin(playerid,6))
    zu:
    if(IsPlayerAdmin(playerid))


    if(IsPlayerNPC(pID))return 1;
    zu:
    if(isPlayerAnAdmin(playerid,5) && adminid > 1) return SendClientMessage(playerid, GRAU, "Du kannst nur Rang 1 vergeben.");
    if(IsPlayerNPC(pID))return 1;

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • OK sry wenn ich es etwas unverständliche Erklärt habe.



    Ich habe mir die beiden Position

    Code
    GetDynamicObjectRot(obj, Pos[0], Pos[1], Pos[2]);
    	GetPlayerFacingAngle(playerid, a);
    	x -= (dist * floatsin(-Pos[2], degrees));
    	y -= (dist * floatcos(-Pos[2], degrees));
    	if(Pos[2] > 0)
    	{
    		diff = (floatround(a) % 360) - floatround(Pos[2]);
    	}

    A und Pos[2] mal Printen lassen es kam raus
    A = 170 und Pos[2] = 380 ( nicht genau so aber weiß es gerade nichtmehr )
    Dann habe ich eine Tonne auf die Z-Rotation also in diesem Fall Pos[2] auf 170 gedreht und es hat Funktioniert weil A 170 - Pos[2] 170 Ja zwischen -15 und 15 Liegt.
    Dann habe ich es mit -170 Probiert da ging es nicht dann habe ich die eine Rechnung hinzugefügt und nun Funktioniert es egal welche Rotation die Mülltonne hat.


    @Jeffry:
    Gibt es ein Timerinclude was 100% richtig Funktioniert ?
    bzw nahezu 100%ig ?

  • Dann habe ich es mit -170 Probiert da ging es nicht dann habe ich die eine Rechnung hinzugefügt und nun Funktioniert es egal welche Rotation die Mülltonne hat.

    Ok, was interessant ist, da es bei mir so ging. Naja, Hauptsache ist, dass es bei dir jetzt geht.
    Das "% 360" ist in diesem Fall jetzt übrigens obsolet und könnte entfernt werden.



    bzw nahezu 100%ig ?

    Du könntest dir diese Include anschauen: http://forum.sa-mp.com/showthread.php?t=289675

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