[FUN]-Befehl Help!

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
  • Hey Leute,


    ich wollte fragen ob man einen befehl wie im film "Speed" erstellen kann.
    Also:::


    Ein Spieler sitzt in seinem Fahrzeug.. Ich geb als Beifahrer ein "/asp"..
    Wenn er dann unter 50 KM/H fährt, soll das Auto explodieren, aber er
    soll vorher eine Nachricht bekommen.


    Ist sowas möglich? Hoffe ich mal :rolleyes:
    Danke schonmal für Antwort..



    Narushi

  • Bin mir net sicher, aber ich glaube du musst abfragen ob die Geschwindigkeit kleiner als 50 ist und wenn das der Fall ist einfach ein paar Explosionen erstellen bis das Auto explodiert.
    Ich denke du brauchst dafür n Tacho.

  • Was habe ich falsch gemacht??
    Bitte HELP!!


    ocmd:asp(playerid,params[])
    {
    new pID, gsw, carid, name[MAX_PLAYER_NAME], str[128];
    GetPlayerName(playerid,name,sizeof(name));
    if(PlayerInfo[playerid][pAdmin] >= 2012)
    {
    if(sscanf(params,"ui",pID,gsw)) return SendClientMessage(playerid,COLOR_GREY,"BENUTZUNG: /asp [Name/ID] [Min.Gsw]");
    if(!IsPlayerInAnyVehicle(pID))
    {
    SendClientMessage(playerid,COLOR_GREY,"Der Spieler ist in keinem Fahrzeug!");
    return 1;
    }
    else if(IsPlayerInAnyVehicle(pID))
    {
    format(str,sizeof(str),"%s hat eine Bombe in dein Auto implantiert. Mindestgeschwindigkeit: %i");
    carid = GetPlayerVehicleID(pID);
    SendClientMessage(pID,COLOR_RED,str);
    SendClientMessage(playerid,COLOR_RED,str);
    SendClientMessage(playerid,COLOR_PURPLE,"* AutoSpeedBombe inplantiert!");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(pID,x,y,z);
    new Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,final_speed_int;
    new speeds;
    GetVehicleVelocity(carid, speed_x, speed_y, speed_z);
    final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*93.0; // 136.666667 = kmph // 85.4166672= mph
    final_speed_int = floatround(final_speed,floatround_round);
    speeds = final_speed_int;
    if(speeds < gsw)
    {
    SendClientMessage(playerid,COLOR_RED,"Bombe Explodiert");
    CreateExplosion(x,y,z,2,20);
    CreateExplosion(x,y,z,2,20);
    CreateExplosion(x,y,z,2,20);
    CreateExplosion(x,y,z,2,20);
    CreateExplosion(x,y,z,2,20);
    DestroyVehicle(carid);
    }
    return 1;
    }
    }
    return 1;
    }

  • du musst die Geschwindigkeit als Variable angeben (%d) nicht in (%i)... Dann sollte es Funktionieren
    also
    if(sscanf(params,"ud",pID,gsw)) return SendClientMessage(playerid,COLOR_GREY,"BENUTZUNG: /asp [Name/ID] [Min.Gsw]");
    und
    format(str,sizeof(str),"%s hat eine Bombe in dein Auto implantiert. Mindestgeschwindigkeit: %d",name,gsw);


    Edit:
    Mache einen SekundenTimer !


    Ganz oben im Script
    new aspPlayer[MAX_PLAYERS]
    new aspPlayerGSW[MAX_PLAYERS}
    forward SekTimer();


    bei OnGameModeInit()
    SetTimer("SekTimer", 1000, 1);


    Ganz untem im Script
    public SekTimer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,final_speed_int;
    new speeds;
    GetVehicleVelocity(carid, speed_x, speed_y, speed_z);
    final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*93.0; // 136.666667 = kmph // 85.4166672= mph
    final_speed_int = floatround(final_speed,floatround_round);
    speeds = final_speed_int;
    if(aspPlayer[i] == 1)
    {
    if(aspPlayerGSW[i] < speeds)
    {
    SendClientMessage(playerid,COLOR_RED,"Bombe Explodiert");
    CreateExplosion(x,y,z,2,20);
    CreateExplosion(x,y,z,2,20);
    CreateExplosion(x,y,z,2,20);
    CreateExplosion(x,y,z,2,20);
    CreateExplosion(x,y,z,2,20);
    DestroyVehicle(carid);
    return 1;
    }
    }
    }
    return 1;
    }


    In deinem Befehl, sollte dann nun so aussehen
    ocmd:asp(playerid,params[])
    {
    new pID, gsw, carid, name[MAX_PLAYER_NAME], str[128];
    GetPlayerName(playerid,name,sizeof(name));
    if(PlayerInfo[playerid][pAdmin] >= 2012)
    {
    if(sscanf(params,"ud",pID,gsw)) return SendClientMessage(playerid,COLOR_GREY,"BENUTZUNG: /asp [Name/ID] [Min.Gsw]");
    if(!IsPlayerInAnyVehicle(pID))
    {
    SendClientMessage(playerid,COLOR_GREY,"Der Spieler ist in keinem Fahrzeug!");
    return 1;
    }
    else if(IsPlayerInAnyVehicle(pID))
    {
    format(str,sizeof(str),"%s hat eine Bombe in dein Auto implantiert. Mindestgeschwindigkeit: %d",name,gsw);
    carid = GetPlayerVehicleID(pID);
    aspPlayer[pID] = 1;
    aspPlayerGSW[pID] = gsw;
    SendClientMessage(pID,COLOR_RED,str);
    SendClientMessage(playerid,COLOR_RED,str);
    SendClientMessage(playerid,COLOR_PURPLE,"* AutoSpeedBombe inplantiert!");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(pID,x,y,z);
    return 1;
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von [LP]Tochnas ()

  • %d und %i = Ist doch beides Integer o.o..
    ausserdem die nachrichten nicht soooo wichtig, aber der befehl an sich ist das problem..


    Wenn das auto zB unter 50 KM/H fährt, soll es explodieren.