[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

  • IsPlayerInRangeOfPoint(playerid, FloatX, FloatY, FloatZ,..) Glaube ich, bin mir nicht sicher.


    MfG


    CheckPlayerDistanceToVehicle(3.5, playerid, i //schleife von allen autos oder deins);
    stock CheckPlayerDistanceToVehicle(Float:radi, playerid, vehicleid)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:PX,Float:PY,Float:PZ,Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,PX,PY,PZ);
    GetVehiclePos(vehicleid, X,Y,Z);
    new Float:Distance = (X-PX)*(X-PX)+(Y-PY)*(Y-PY)+(Z-PZ)*(Z-PZ);
    if(Distance <= radi*radi)
    {
    return 1;
    }
    }
    return 0;
    }

  • PawnFox:


    Ich will das aber, das er UNTER dem Auto stehen muss ;D


    Hab hier mal ein für Hinter das Auto. Verstehe den aber nicht^^


    stock IsPlayerBehindVehicle(playerid,veh)
    {
    new Float:vcoord[3]; GetVehiclePos(veh,vcoord[0],vcoord[1],vcoord[2]);
    new Float:vangle; GetVehicleZAngle(veh,vangle);
    new Float:vinfo[3]; GetVehicleModelInfo(GetVehicleModel(veh),VEHICLE_MODEL_INFO_SIZE,vinfo[0],vinfo[1],vinfo[2]);
    new Float:lenge = floatdiv(vinfo[1],2.0);
    new Float:radius = floatdiv(vinfo[0],2.0);
    vcoord[0] = floatadd(vcoord[0],(-lenge * floatsin(-vangle,degrees)));
    vcoord[1] = floatadd(vcoord[1],(-lenge * floatcos(-vangle,degrees)));
    if(IsPlayerInRangeOfPoint(playerid,radius,vcoord[0],vcoord[1],vcoord[2])){return 1;}
    else{return 0;}
    }


    © by Firerfan

  • Dann brauchst du das garnicht ;)


    stock IsPlayerUnterVehicle(playerid,vehicleid){ new Float:vPos[3]; GetVehiclePos(vehicleid,vPos[0],vPos[1],vPos[2]); if(IsPlayerInRangeOfPoint(playerid,2.0,vPos[0],vPos[1],vPos[2]))return true; return false;}

    now @ glowfire CMS.

  • xy-koordinaten beibehalten und die Z-Koordinate veringen, dann abfragen:
    stock IsPlayerUnderVehicle(playerid,vehicleid)
    {
    new Float:vpos[3];
    GetVehiclePos(vehicleid,vpos[0],vpos[1],vpos[2]);
    if(IsPlayerInRangeOfPoint(playerid,2.0,vpos[0],vpos[1],vpos[2]-1.0)){return 1;}
    return 0;
    }
    Ungetestet, müsste aber Theoretisch funktionieren.



    //EDIT:
    Bei dem Code, mit hinter dem Fahrzeug wird aufgrund der Rotation via Sinus & Cosinus ein punkt hinter dem Fahrzeug bestimmt und abgefragt, ob der Spieler dort steht.

  • Klar kann man die klammern auch weglassen, aber warum sie nicht dazu schreiben?
    Macht keinen Unterschied, ausser das ich meine Version als sauberer Empfinde.


    Ausserdem ist dein Code nicht formatiert und würde so nicht funktionieren, sondern Errors/Warnings auswerfen.

  • Habe da mal ne Frage!
    Und zwar:
    Ich habe vor, wenn man /gmx eingibt, dass dann alle Spieler auf dem Server ein Lied hören, bzw. ein Radio!
    Ich habe es so gemacht!
    Aber irgendwie klappt es net ganz!
    Es soll zuerst das erste kommen, dann nach 5 Sek das andere!
    Hier der Code:
    Function OnGameModeExit()
    {
    Elevator_Destroy();
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    OnPlayerCarUpdate(i);
    PlayerUpdate(i);
    gPlayerLogged[i] = 0;
    DisablePlayerCheckpoint(i);
    }
    }
    for(new i = 0; i < AUTOHAUSER; i++)
    {
    DestroyPickup(Dtc_Info[i]);
    }
    for(new i; i < MAX_FLAMES; i++)
    {
    KillFire(i);
    }
    PlayAudioStreamForPlayer(playerid, "http://testerdingel.te.funpic.de/Anderes/GMX.mp3");//von hier
    SetTimer("GMXSong", 5000, false);
    PlayAudioStreamForPlayer(playerid, "http://www.surfmusik.de/m3u/energy-stuttgart,4342.m3u");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED," ");
    SendClientMessageToAll(COLOR_RED,"~~~~~~~ ACHTUNG ~~~~~~~");
    SendClientMessageToAll(COLOR_RED,"Der Server wird nun neugestartet!");
    SendClientMessageToAll(COLOR_RED,"~~~~~~~~~~~~~~~~~~~~~~~");//bis hier ist der Teil
    return 1;
    }


    Ich habr vor mit dem Code:
    /gmx - dann kommt der GMX.mp3 Song und direkt danach soll Server wird neugestartet den Adio Stream wegspammen und dann nach 5 Sekunden soll das zweite Audio Teil kommen!

    Einmal editiert, zuletzt von Killas ()

  • Hab nochmal ne kleine Frage ;D
    Warum "erstellt" er die Nummer nicht?


    new handynummer = 10000+random(89999)+playerid+100+random(999);
    dini_IntSet(Spielerdatei,"HandyNr",handynummer);


    Spielerdatei ist definiert..
    Wenn ich handynummer printe kommt z.B. 60344 raus

  • Hi Leute habe eine Frage an euch. Also ich möchte ein Timer starten wenn ein Truck einen Anhänger verliert.
    Nur unter welcher funktion muss uch diese Abfrage machen:

    DetachTrailerFromVehicle();

    Oder muss ich ein Timer setzen der das alle 2 Sekunden kontrolliert. Danke für eure Hilfe.


    MFG

    Gruß


    xKrUsE6x :thumbup:

  • Problem.


    Gut das war von meinem Anderen Script kopiert, aber ka why es not funzt.


    C:\Users\Patrick\Desktop\GameMode\gamemodes\new.pwn(383) : error 036: empty statement
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    stock SpielerLaden(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Spieler/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Score"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminrank",dini_Int(Spielerdatei,"Adminrank"));
    SetPVarInt(playerid,"Banned",dini_Int(Spielerdatei,"Banned"));;
    if(GetPVarInt(playerid,"Banned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"login",1);
    return 1;
    }

  • Damit ich es mir merke.


    Was bedeutet in dieser Zeile eigentlich welcher Bustabe was?
    Ich versteh dies noch nocht zu 100%.


    Beispiel:


    if(sscanf(params,"ui",pID,rank)) return SendClientMessage(playerid,GRAU,"Verwende: /setadmin [Spieler/ID] [Adminrank]");



    Damit man mir diese Frage leichter beantworten kann, damit ihr wisst was gemeint ist, zeige ich es genauer.


    if (sscanf (params, "ui", pID, rank)) // Hier sind die " u " und " i " gemeint.



    Es gibt ja auch noch die Bustaben " d " und " s ".
    Was hat es damit genau auf sich?


  • http://wiki.sa-mp.com/wiki/Fast_Commands#sscanf