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

  • Dann musst du die Abfrage so schreiben:
    if(PlayerInfo[playerid][pAdmin] == 5 && adminid > 1) return SendClientMessage(playerid, GRAU, "Du kannst nur Rang 1 vergeben.");
    Eventuell musst du das PlayerInfo und pAdmin zu dem umbenennen, wie es bei dir heißt.

  • Klappt leider auch nicht.
    Beim Verscuh den Befehl auszuführen kommt immer Du hast nicht genügend Rechte für diesen Befehl.



    else {SendClientMessage(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl.");}
    return 1;

    Liegts vlt daran? Wen ich es entferne geschieht garnichts.


    @Jeffry

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Jetzt habe ich es so geändert wie du meintest, jedoch kann ich nun alle Ränge vergeben und nicht nur 1.


    @Jeffry



    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,7))
    {
    if(SpielerDaten[playerid][pAdmin] == 7 && adminid > 1)return SendClientMessage(playerid, GRAU, "Du kannst nur den Rang Helfer vergeben.");
    if(IsPlayerNPC(pID))return 1;
    if(sscanf(params, "ui", pID, adminid))return SendClientMessage(playerid, GRAU, "Benutze /makehelfr [SpielerID/Name] [Teamrang]");
    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;
    }

    So siehts aktuell aus.

  • IsPlayerAdmin(playerid) || isPlayerAnAdmin(playerid,5))
    Hier wird abgefragt, ob der Admin den Rang 5 hat, wenn nicht dann geht der g esamte Befehl nicht oder irre ich?


    if(SpielerDaten[playerid][pAdmin] < 7 && adminid > 1) return SendClientMessage(playerid, GRAU, "Du kannst nur den Rang Helfer vergeben.");
    Hier wird abgefragt ob der Admin einen kleineren Rang als 7 hat, wenn nicht, kann er auch andere Ränge als Rang 1 vergeben oder irre ich?


    MfG


    //Edit: Irgendwie klappt das ganze bei mir nicht.

  • Hey Kurze frage.


    Wollte den Befehl auch machen das man mit Numpad 8 auch den motor starten kann wie mache ich das am besten?



  • public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_ANALOG_UP)
    {
    //Motor
    ocmd_motor(playerid,"");
    return 1;


    Versuchs mal damit
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) ist bereits im Script vorhanden, einfach den Rest dazus chreiben.


    MfG

  • Hallo.



    Wie kann ich diesen Befehl kleiner schreiben und das es nicht soviele if abfragen sind.



    Code:



    CMD:scheine(playerid,params[])
    {
    if(!IsPlayerConnected(giveplayerid)) return NO_CON;
    new giveplayerID,string[128],Float:x,Float:y,Float:z;
    GetPlayerPos(playa,x,y,z);
    if(sscanf(params,"d",giveplayerID))return SendClientMessage(playerid,Grau,"Benutzung: /scheine [SpielerID]");
    if(IsPlayerInRangeOfPoint(playerid, 10.0, x,y,z))
    {
    new ftext[20],wtext[20],fltext[20],atext[20],btext[20];
    if(Spieler[playerid][DrivLic] == 1){ ftext ="Vorhanden";}
    else if(Spieler[playerid][DrivLic] == 0){ ftext ="Nicht Vorhanden";}
    if(Spieler[playerid][GunLic] == 1){ wtext ="Vorhanden";}
    else if(Spieler[playerid][GunLic] == 0){ wtext ="Nicht Vorhanden";}
    if(Spieler[playerid][FlugLic] == 1){ fltext ="Vorhanden";}
    else if(Spieler[playerid][FlugLic] == 0){ fltext ="Nicht Vorhanden";}
    if(Spieler[playerid][AngelLic] == 1){ atext="Vorhanden";}
    else if(Spieler[playerid][AngelLic] == 0){ atext="Nicht Vorhanden";}
    if(Spieler[playerid][BootLic] == 1){ btext ="Vorhanden";}
    else if(Spieler[playerid][BootLic] == 0){ btext ="Nicht Vorhanden";}
    format(string, sizeof(string), "Scheine von %s", SpielerName(playerid));
    SendClientMessage(playa, COLOR_WHITE, string);
    format(string, sizeof(string), "Führerschein: %s Waffenschein: %s Flugschein %s", ftext, wtext, fltext);
    SendClientMessage(playa, COLOR_GREEN, string);
    format(string, sizeof(string), "Angelschein: %s Bootschein: %s", atext, btext);
    SendClientMessage(playa, COLOR_GREEN, string);


    format(string,sizeof(string),"* %s zeigt %s seine Scheine.", Spieler[playerid][pName],SpielerName(playa));
    ProxDetector(25.0,playerid,string,Grau,Grau2,Grau3,Grau4,Grau5);
    }
    return 1;
    }

  • public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){ if(newkeys & KEY_ANALOG_UP) { //Motor ocmd_motor(playerid,""); return 1;


    Versuchs mal damit
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) ist bereits im Script vorhanden, einfach den Rest dazus chreiben.


    MfG

    C:\Users\PC\Desktop\Neues Script\gamemodes\German.pwn(1450) : warning 202: number of arguments does not match definition


    ocmd_motor(playerid,"");

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