Hilfe bei Abseilungs Befehl

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

  • Also,


    Ich habe heute mal ein Abseil System gefunden, nun wenn man denn Befehl eingeben tut (Heißt nun /test)
    Wenn man nun /test eingibt kommt man zu weit nach unten und fällt durch die Map und Spawnt an der Bluebarryfarm hier ist mal der Code:


    #include <a_samp>
    #include <bfx_objects>


    /*
    Scriptname : S.W.A.T Rope
    Version : 1.0
    Copyright : Trooper (c) 2009
    Release : German & English
    Credits : Blackfox_UD -> Streamer
    */


    //Easy Edit Section
    #define howmanyropes 20 //how many ropes server should contain (increasing number,decreases server power)
    #define zcatchtimer 1200 //in ms, time to calculate height
    #define r_maxping 275 //highest ping of sliding units, dont set too high, or death-bugs will increase
    #define falltime 10 //low = the best, but beware of server weakness (25 isnt incredible high, think, that you slide around 2-5 secs)
    #define ropelength 50 //in meter, after what amount of meters you start falling (and rope ends)... Increasing will take server power and realism
    #define abfangen 2 //at what height above ground should player get stopped ?


    // DO NOT EDIT BELOW, IF YOU DO NOT KNOW, WHATS IT !


    new Float:tempx[MAX_PLAYERS],Float:tempy[MAX_PLAYERS],Float:tempz[MAX_PLAYERS],Float:tempa[MAX_PLAYERS];
    new Float:lowz[MAX_PLAYERS],vworld[MAX_PLAYERS],chopper[MAX_PLAYERS];
    new Float:tx[MAX_PLAYERS],Float:ty[MAX_PLAYERS],Float:tz[MAX_PLAYERS],Text:blind;
    new Float:helix[MAX_PLAYERS],Float:heliy[MAX_PLAYERS],Float:heliz[MAX_PLAYERS];
    new seile[9999][MAX_PLAYERS],issliding[MAX_PLAYERS],tempplayerid[MAX_PLAYERS],notstarted[MAX_PLAYERS];
    forward lowzcatch(playerid,Float:x2,Float:y2,Float:z2);
    forward SetPosTimer(playerid);
    forward OnPlayerUpdate(playerid);
    forward checkseil(heliid,Float:seilx,Float:seily,Float:seilz);
    #define COLOR_GREY 0xAFAFAFAA
    #define COLOR_GREEN 0x33AA33AA
    #define COLOR_RED 0xAA3333AA
    #define COLOR_ORANGE 0xFF9900FF
    #define COLOR_BLUE 0x0000FF00



    public OnFilterScriptInit()
    {
    TextDrawUseBox(blind,1);
    TextDrawBoxColor(blind,0x000000FF);
    TextDrawTextSize(blind,641.000000,10.000000);
    TextDrawAlignment(blind,0);
    TextDrawBackgroundColor(blind,0x00000000);
    TextDrawFont(blind,3);
    TextDrawLetterSize(blind,1.000000,51.000000);
    TextDrawColor(blind,0x000000AA);
    TextDrawSetOutline(blind,1);
    TextDrawSetProportional(blind,1);
    TextDrawSetShadow(blind,1);
    print("\n--------------------------------------");
    print(" Rope RC1 v1 (c) Trooper 2009");
    print("--------------------------------------\n");
    for(new p=0; p<howmanyropes; p++)
    {
    for(new i=0; i<ropelength; i++)
    { //alte model id = 338
    seile[i][p] = b_CreateObject(3004,0,0,-90000-i,87.640026855469,342.13500976563, 350.07507324219);
    }
    }
    return 1;
    }


    public OnFilterScriptExit()
    {
    TextDrawDestroy(blind);
    for(new p=0; p<howmanyropes; p++)
    {
    for(new i=0; i<ropelength; i++)
    {
    b_DestroyObject(seile[i][p]);
    }
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    issliding[playerid] = 0,tempplayerid[playerid] = -1,notstarted[playerid] = 0;
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    TextDrawHideForPlayer(playerid,blind);
    b_PlayerDisconnect(playerid);
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    b_OnPlayerUpdate(playerid);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(issliding[playerid] != 0)
    {
    //OnPlayerDeathBug

    //end
    SendClientMessage(playerid,COLOR_ORANGE,"Ups, deine Hände sind aus Versehen abgerutscht ! Versuchs noch einmal .");
    for(new i=0; i<ropelength; i++)
    {
    b_SetObjectPos(seile[i][tempplayerid[playerid]],0,0,-90000);
    notstarted[playerid] = 0;
    }
    issliding[playerid] = 0;
    issliding[tempplayerid[playerid]] = 0;
    ClearAnimations(playerid);
    }
    return 1;
    }


    public checkseil(heliid,Float:seilx,Float:seily,Float:seilz)
    {
    if(!HeliToPoint(5,heliid,seilx,seily,seilz))
    {
    for(new p=0; p<MAX_PLAYERS; p++) // seil reißen
    {
    if(IsPlayerConnected(p) && issliding[p] == heliid)
    {
    //OnPlayerSnatchRope

    //end
    issliding[p] = 0;
    GameTextForPlayer(p,"Seil gerissen",1000,1);
    ClearAnimations(p);
    notstarted[p] = 0;
    issliding[tempplayerid[p]] = 0;
    for(new i=0; i<ropelength; i++)
    {
    b_SetObjectPos(seile[i][tempplayerid[p]],0,0,-90000+i);
    }
    }
    }
    }
    else
    {
    SetTimerEx("checkseil",500,0,"ifff",heliid,seilx,seily,seilz);
    }
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys == KEY_SUBMISSION && GetPlayerState(playerid) == 3 && issliding[playerid] == 0 && notstarted[playerid] == 0)
    {
    if(GetPlayerPing(playerid) > r_maxping) { return GameTextForPlayer(playerid,"Zu hoher Ping !",1000,1); }
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 497 && GetPlayerSkin(playerid) == 285)
    {
    //OnPlayerStartSliding (use for other conditions)

    //end
    for(new p=0; p<howmanyropes; p++)
    {
    if(issliding[p] == 0) { tempplayerid[playerid] = p; }
    }
    if(tempplayerid[playerid] == -1) { return GameTextForPlayer(playerid,"Technisches Problem",1000,1); }

    GetVehiclePos(GetPlayerVehicleID(playerid),helix[playerid],heliy[playerid],heliz[playerid]);
    issliding[playerid] = GetPlayerVehicleID(playerid);
    issliding[tempplayerid[playerid]] = 1;
    notstarted[playerid] = 2;
    GetPlayerPos(playerid,tempx[playerid],tempy[playerid],tempz[playerid]); //alte position speichern
    GetPlayerFacingAngle(playerid,tempa[playerid]);
    SetTimerEx("checkseil",1000,0,"ifff",GetPlayerVehicleID(playerid),helix[playerid],heliy[playerid],heliz[playerid]);
    vworld[playerid] = GetPlayerVirtualWorld(playerid);
    RemovePlayerFromVehicle(playerid); //spieler aus heli raus
    SetPlayerVirtualWorld(playerid,10);
    ApplyAnimation(playerid,"ped","abseil",4.0,0,0,0,1,0); //animation startem
    SetVehiclePos(chopper[playerid],tempx[playerid],tempy[playerid],tempz[playerid]);
    SetPlayerPosFindZ(playerid,tempx[playerid],tempy[playerid],tempz[playerid]);
    SetPlayerCameraPos(playerid,tempx[playerid],tempy[playerid]+10,tempz[playerid]+10);
    SetPlayerCameraLookAt(playerid,helix[playerid],heliy[playerid],heliz[playerid]);
    TextDrawShowForPlayer(playerid,blind);
    SetTimerEx("lowzcatch",zcatchtimer,0,"ifff",playerid,tempx[playerid],tempy[playerid],tempz[playerid]);


    //OnCalculateZ (use for messages or optical things)

    //end

    for(new i=0; i<ropelength; i++)
    {
    b_SetObjectPos(seile[i][tempplayerid[playerid]],tempx[playerid],tempy[playerid],tempz[playerid] - i);
    }
    return 1;
    }
    return 0;
    }
    if(newkeys == KEY_SUBMISSION && GetPlayerState(playerid) == 3 && issliding[playerid] != 0 && notstarted[playerid] == 1)
    {
    //OnPlayerLetFall

    //end
    new Float:landex,Float:landey,Float:landez;
    GetPlayerPos(playerid,landex,landey,landez);
    SetPlayerPos(playerid,landex,landey,landez);
    issliding[playerid] = 0;
    issliding[tempplayerid[playerid]] = 0;
    notstarted[playerid] = 0;
    GameTextForPlayer(playerid,"Du hast das Seil losgelassen",1000,1);
    for(new i=0; i<ropelength; i++)
    {
    b_SetObjectPos(seile[i][tempplayerid[playerid]],tempx[playerid],tempy[playerid],tempz[playerid] - i);
    }
    return 1;
    }
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    /* if (strcmp("/heli", cmdtext, true, 5) == 0)
    {
    new Float:x1,Float:y1,Float:z1;
    GetPlayerPos(playerid,x1,y1,z1);
    CreateVehicle(497,x1+3,y1+3,z1,0,0,0,9999);
    return 1;
    }*/
    if (strcmp("/abseilen", cmdtext, true, 5) == 0)
    {
    SetPlayerPosFindZ(playerid,0,0,1000);
    return 1;
    }
    return 0;
    }



    public SetPosTimer(playerid)
    {
    if(issliding[playerid] == 0) { return 0; }
    //OnPlayerCheck

    //end
    GetPlayerPos(playerid,tx[playerid],ty[playerid],tz[playerid]);
    if(tz[playerid]-lowz[playerid] < abfangen && tz[playerid]-lowz[playerid] > -abfangen)
    {
    //OnPlayerReady

    //end
    new Float:temphealth;
    GetPlayerHealth(playerid,temphealth);
    if(temphealth <= 0) { return 0; }
    ClearAnimations(playerid);
    SetPlayerPos(playerid,tx[playerid],ty[playerid],tz[playerid]);
    issliding[playerid] = 0;
    notstarted[playerid] = 0;
    issliding[tempplayerid[playerid]] = 0;
    for(new i=0; i<ropelength; i++)
    {
    b_SetObjectPos(seile[i][tempplayerid[playerid]],0,0,-90000-i);
    }
    return 1;
    }
    if(heliz[playerid]-tz[playerid] > ropelength)
    {
    //OnPlayerRopeEnd


    //end
    ClearAnimations(playerid);
    issliding[playerid] = 0;
    notstarted[playerid] = 0;
    issliding[tempplayerid[playerid]] = 0;
    GameTextForPlayer(playerid,"Seilende erreicht",1000,1);
    for(new i=0; i<ropelength; i++)
    {
    b_SetObjectPos(seile[i][tempplayerid[playerid]],0,0,-90000-i);
    }
    return 1;
    }
    ApplyAnimation(playerid,"ped","abseil",4.0,0,0,0,1,0);
    SetTimerEx("SetPosTimer",falltime,0,"i",playerid);
    return 1;
    }


    stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    return 0;
    }


    stock ObjectToPoint(Float:radi, objectid, Float:x, Float:y, Float:z)
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetObjectPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    return 0;
    }


    stock HeliToPoint(Float:radi, heliid, Float:x, Float:y, Float:z)
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetVehiclePos(heliid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    return 0;
    }


    public lowzcatch(playerid,Float:x2,Float:y2,Float:z2)
    {
    new Float:unsinnx[MAX_PLAYERS],Float:unsinny[MAX_PLAYERS];
    GetPlayerPos(playerid,unsinnx[playerid],unsinny[playerid],lowz[playerid]);
    SetPlayerPos(playerid,unsinnx[playerid],unsinny[playerid],z2-2);
    SetCameraBehindPlayer(playerid);
    SetPlayerVirtualWorld(playerid,vworld[playerid]);
    TextDrawHideForPlayer(playerid,blind);
    SetVehiclePos(chopper[playerid],unsinnx[playerid],unsinny[playerid],z2);
    SetTimerEx("SetPosTimer",300,0,"i",playerid);
    notstarted[playerid] = 1;
    return 1;
    }



    Ich hoffe ihr könnt mir Helfen :)


    Mit Freundlichen Grüßen
    xB0sSLikE

    Einmal editiert, zuletzt von Trooper[Y] ()

  • In dem Scriptteil steht alles drinne:



    if(newkeys == KEY_SUBMISSION && GetPlayerState(playerid) == 3 && issliding[playerid] == 0 && notstarted[playerid] == 0)
    {
    if(GetPlayerPing(playerid) > r_maxping)
    {
    return GameTextForPlayer(playerid,"Zu hoher Ping !",1000,1);
    }
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 497 && GetPlayerSkin(playerid) == 285)
    {
    ...
    }
    }


    Verwende die KEY_SUBMISSION-Taste (Taste "2" [nicht auf dem Numpad])
    wenn du in einem Policemaverick (ID 497) sitzt und Skin 285 (SWAT-Skin) hast.
    /test ist überflüssig.


    Mit freundlichen Grüßen
    Saitek | Timo


    Du hast Probleme beim Programmieren oder mit deinem PC?
    Registriere Dich doch auf PC-Rat-Hilfeforum.de.
    Nach dem Registrieren musst du nur deine E-Mail-Adresse bestätigen,
    dann kann es auch schon losgehen. Also worauf wartest du?


    Erreichbar unter folgender E-Mail-Adresse
    support@pc-rat-hilfeforum.de