Beiträge von Ghosti8

    Moin, mein Problem ist das wenn z.b die Geschwindigkeit und der Drift stimmt, sagt er es ist trotzdem falsch!
    Ich glaube bei der Abfrage vom Float... stimmt etwas nicht.


    Script:

    Spoiler anzeigen
    new Float:dspeed = -3.0;
    new Float:float1 = -0.2;
    new Float:float2 = 0.2;
    new Float:Velocity[3], output[80];
    GetVehicleVelocity(GetPlayerVehicleID(playerid), Velocity[0], Velocity[1], Velocity[2]);

    Spoiler anzeigen
    if (Velocity[0] <= dspeed)
    {
    if (Velocity[1] <= float1)
    {
    DisablePlayerCheckpoint(playerid);
    format(output, sizeof(output), "[WIN]You are going at a velocity of X%f, Y%f, Z%f", Velocity[0], Velocity[1], Velocity[2]);
    SendClientMessage(playerid, 0xFFFFFFFF, output);
    }
    else
    {
    if (Velocity[1] >= float2)
    {
    DisablePlayerCheckpoint(playerid);
    format(output, sizeof(output), "[WIN]You are going at a velocity of X%f, Y%f, Z%f", Velocity[0], Velocity[1], Velocity[2]);
    SendClientMessage(playerid, 0xFFFFFFFF, output);
    }
    }
    }
    else
    {
    DisablePlayerCheckpoint(playerid);
    format(output, sizeof(output), "[FAIL] You are going at a velocity of X%f, Y%f, Z%f", Velocity[0], Velocity[1], Velocity[2]);
    SendClientMessage(playerid, 0xFFFFFFFF, output);
    }


    Ich weis vllt etwas unnötig kompliziert gemacht, aber so funktioniert es^^


    Hat den keiner eine Lösung??

    Versuch doch die Sache mit den Bonis einfach nach und nach rauszunehmen, dann musst du dich zwar länger damit befassen aber wirst den Code sicherlich besser verstehen.


    Jetzt ist die Frage wo fängt der Teil mit den Bonus etc Sachen an und wo endet er ;).
    Ich weis nicht warum aber ich kann einfach verdammt wenig daraus erkennen obwohl meine
    Kenntnisse gar nicht mal so schlecht sind^^


    Keine Lösung....

    Aber wo wird abgefragt ob das Auto gerade fährt und in welche Richtung es steht(driftet,fährt)?
    Ich will z.b abfragen ob das auto sich nach Norden bewegt und nach Osten kuckt^^. (Also ob es driftet.)

    Script:


    Spoiler anzeigen
    ////////////////////////////////////////////////////////////
    /////////////// DRIFT POINTS COUNTER BY LUBY ///////////////
    /////////////// A little editted by Abhinav ////////////////
    ////////////////////////////////////////////////////////////

    Spoiler anzeigen
    #include <a_samp> // by I dont know .. :D lol

    Spoiler anzeigen
    #define DRIFT_MINKAT 10.0 // by Luby
    #define DRIFT_MAXKAT 90.0 // by Luby
    #define DRIFT_SPEED 30.0 // by Luby

    Spoiler anzeigen
    //////////// Added by Abhinav///////
    #define COLOR_Label 0xFFFFFFFF
    #define COLOR_LabelOut 0x00000040
    #define COLOR_ValueOut 0xFFFFFF40
    #define COLOR_Value 0x000000FF

    Spoiler anzeigen
    #define Label_X 500
    #define Value_X 500
    #define TD_Y 100
    /////////////////////////////////////

    Spoiler anzeigen
    new DriftTimer[MAX_PLAYERS]; // Added by Abhinav
    new TimerA,TimerB,TimerC; // Added by Abhinav

    Spoiler anzeigen
    new DriftPointsNow[MAX_PLAYERS]; // by Luby
    new PlayerDriftCancellation[MAX_PLAYERS]; // by Luby
    new Float:ppos[MAX_PLAYERS][3]; // by Luby
    enum Float:Pos{ Float:sX,Float:sY,Float:sZ }; // by Luby
    new Float:SavedPos[MAX_PLAYERS][Pos]; // by Luby

    Spoiler anzeigen
    new bool:DriftMode[MAX_PLAYERS]=false; // Added by Abhinav
    new DriftBonus[MAX_PLAYERS]=1; // Added by Abhinav
    new Float:HealthInit[MAX_PLAYERS]=1000.0; // Added by Abhinav
    new bool:AutoFixBool[MAX_PLAYERS]=true; // Added by Abhinav

    Spoiler anzeigen
    new Text:TDLabels[3]; // Added by Abhinav
    new Text:TDValueDrift[MAX_PLAYERS]; // Added by Abhinav
    new Text:TDValueBonus[MAX_PLAYERS]; // Added by Abhinav
    new Text:TDValueCash[MAX_PLAYERS]; // Added by Abhinav

    Spoiler anzeigen
    forward Drift(); // by Luby
    forward AngleUpdate(); // by Luby
    forward DriftExit(playerid); // by Luby
    forward CheckPlayerState(); // Added by Abhinav
    forward AutoFix(); // Added by Abhinav

    Spoiler anzeigen
    public OnFilterScriptInit(){
    TimerA=SetTimer("AngleUpdate", 200, true); // by Luby
    TimerB=SetTimer("AutoFix", 500, true); //by Abhinav
    TimerC=SetTimer("CheckPlayerState", 100, true); //by Abhinav
    LoadTextDraws();
    return 1;
    }

    Spoiler anzeigen
    public OnFilterScriptExit(){
    KillTimer(TimerA);
    KillTimer(TimerB);
    KillTimer(TimerC);
    return 1;
    }

    Spoiler anzeigen
    Float:GetPlayerTheoreticAngle(i) // By Luby
    {
    new Float:sin;
    new Float:dis;
    new Float:angle2;
    new Float:x,Float:y,Float:z;
    new Float:tmp3;
    new Float:tmp4;
    new Float:MindAngle;

    Spoiler anzeigen
    if(IsPlayerConnected(i)){

    Spoiler anzeigen
    GetPlayerPos(i,x,y,z);

    Spoiler anzeigen
    dis = floatsqroot(floatpower(floatabs(floatsub(x,ppos[i][0])),2)+floatpower(floatabs(floatsub(y,ppos[i][1])),2));

    Spoiler anzeigen
    if(IsPlayerInAnyVehicle(i)){GetVehicleZAngle(GetPlayerVehicleID(i), angle2);}else{GetPlayerFacingAngle(i, angle2);}

    Spoiler anzeigen
    if(x>ppos[i][0]){tmp3=x-ppos[i][0];}else{tmp3=ppos[i][0]-x;}
    if(y>ppos[i][1]){tmp4=y-ppos[i][1];}else{tmp4=ppos[i][1]-y;}

    Spoiler anzeigen
    if(ppos[i][1]>y && ppos[i][0]>x){
    sin = asin(tmp3/dis);
    MindAngle = floatsub(floatsub(floatadd(sin, 90), floatmul(sin, 2)), -90.0);
    }

    Spoiler anzeigen
    if(ppos[i][1]<y && ppos[i][0]>x){
    sin = asin(tmp3/dis);
    MindAngle = floatsub(floatadd(sin, 180), 180.0);
    }

    Spoiler anzeigen
    if(ppos[i][1]<y && ppos[i][0]<x){
    sin = acos(tmp4/dis);
    MindAngle = floatsub(floatadd(sin, 360), floatmul(sin, 2));
    }

    Spoiler anzeigen
    if(ppos[i][1]>y && ppos[i][0]<x){
    sin = asin(tmp3/dis);
    MindAngle = floatadd(sin, 180);
    }
    }

    Spoiler anzeigen
    if(MindAngle == 0.0){return angle2;}else{return MindAngle;}
    }

    Spoiler anzeigen
    public DriftExit(playerid){ // By Luby
    PlayerDriftCancellation[playerid] = 0;

    Spoiler anzeigen
    ////////////////// by Abhinav ///////////////////
    new Float:h;
    GetVehicleHealth(GetPlayerVehicleID(playerid),h);
    if(DriftPointsNow[playerid]>70 && DriftPointsNow[playerid]<10000 && h==HealthInit[playerid]) GivePlayerMoney(playerid,DriftPointsNow[playerid]*DriftBonus[playerid]);
    TextDrawHideForPlayer(playerid,TDLabels[0]);
    TextDrawHideForPlayer(playerid,TDLabels[1]);
    TextDrawHideForPlayer(playerid,TDLabels[2]);
    TextDrawHideForPlayer(playerid,TDValueDrift[playerid]);
    TextDrawHideForPlayer(playerid,TDValueBonus[playerid]);
    TextDrawHideForPlayer(playerid,TDValueCash[playerid]);
    DriftBonus[playerid]=1;
    AutoFixBool[playerid]=true;
    SetVehicleHealth(GetPlayerVehicleID(playerid),HealthInit[playerid]);
    ////////////////////////////////////////////////////

    Spoiler anzeigen
    DriftPointsNow[playerid] = 0;
    }

    Spoiler anzeigen
    Float:ReturnPlayerAngle(playerid){ // By Luby
    new Float:Ang;
    if(IsPlayerInAnyVehicle(playerid))GetVehicleZAngle(GetPlayerVehicleID(playerid), Ang); else GetPlayerFacingAngle(playerid, Ang);
    return Ang;
    }

    Spoiler anzeigen
    public Drift(){ // By Luby
    new Float:Angle1, Float:Angle2, Float:BySpeed;
    new Float:Z;
    new Float:X;
    new Float:Y;
    new Float:SpeedX;
    for(new g=0;g<200;g++){
    GetPlayerPos(g, X, Y, Z);
    SpeedX = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(X,SavedPos[ g ][ sX ])),2),floatpower(floatabs(floatsub(Y,SavedPos[ g ][ sY ])),2)),floatpower(floatabs(floatsub(Z,SavedPos[ g ][ sZ ])),2)));
    Angle1 = ReturnPlayerAngle(g);
    Angle2 = GetPlayerTheoreticAngle(g);
    BySpeed = floatmul(SpeedX, 12);
    if(IsPlayerInAnyVehicle(g) && GetVType(GetPlayerVehicleID(g)) && floatabs(floatsub(Angle1, Angle2)) > DRIFT_MINKAT && floatabs(floatsub(Angle1, Angle2)) < DRIFT_MAXKAT && BySpeed > DRIFT_SPEED){
    if(PlayerDriftCancellation[g] > 0)KillTimer(PlayerDriftCancellation[g]);
    PlayerDriftCancellation[g] = 0;
    DriftPointsNow[g] += floatval( floatabs(floatsub(Angle1, Angle2)) * 3 * (BySpeed*0.1) )/10;
    PlayerDriftCancellation[g] = SetTimerEx("DriftExit", 3000, 0, "d", g);
    }

    Spoiler anzeigen
    if(DriftPointsNow[g] > 70 && DriftPointsNow[g]<10000){
    ///////////// by Abhinav ////////////////////
    if(DriftPointsNow[g]<500){
    DriftBonus[g]=1;
    }
    if(DriftPointsNow[g]>=500 && DriftPointsNow[g]<1000){
    DriftBonus[g]=2;
    }
    if(DriftPointsNow[g]>=1000 && DriftPointsNow[g]<1700){
    DriftBonus[g]=3;
    }
    if(DriftPointsNow[g]>=1700 && DriftPointsNow[g]<2500){
    DriftBonus[g]=4;
    }
    if(DriftPointsNow[g]>=2500){
    DriftBonus[g]=5;
    }

    Spoiler anzeigen
    TextDrawShowForPlayer(g,TDLabels[0]);
    TextDrawShowForPlayer(g,TDLabels[1]);
    TextDrawShowForPlayer(g,TDLabels[2]);

    Spoiler anzeigen
    TextDrawShowForPlayer(g,TDValueDrift[g]);
    TextDrawShowForPlayer(g,TDValueBonus[g]);
    TextDrawShowForPlayer(g,TDValueCash[g]);

    Spoiler anzeigen
    new DPs[128],DBn[128],Cash[128],csh;

    Spoiler anzeigen
    valstr(DPs,DriftPointsNow[g],false);
    format(DBn,sizeof(DBn),"X%i",DriftBonus[g]);
    csh=DriftPointsNow[g]*DriftBonus[g];
    format(Cash,sizeof(Cash),"$%i",csh);

    Spoiler anzeigen
    TextDrawSetString(TDValueDrift[g],DPs);
    TextDrawSetString(TDValueBonus[g],DBn);
    TextDrawSetString(TDValueCash[g],Cash);
    ////////////////////////////////////////
    }
    SavedPos[ g ][ sX ] = X;
    SavedPos[ g ][ sY ] = Y;
    SavedPos[ g ][ sZ ] = Z;
    }
    }

    Spoiler anzeigen
    public AngleUpdate(){ // By Luby
    for(new g=0;g<=MAX_PLAYERS;g++){
    new Float:x, Float:y, Float:z;
    if(IsPlayerInAnyVehicle(g))GetVehiclePos(GetPlayerVehicleID(g), x, y, z); else GetPlayerPos(g, x, y, z);
    ppos[g][0] = x;
    ppos[g][1] = y;
    ppos[g][2] = z;
    }
    }

    Spoiler anzeigen
    floatval(Float:val){ // By Luby
    new str[256];
    format(str, 256, "%.0f", val);
    return todec(str);
    }

    Spoiler anzeigen
    todec(str[]){ // By Luby
    return strval(str);
    }

    Spoiler anzeigen
    LoadTextDraws(){ // by Abhinav
    TDLabels[0]=TextDrawCreate(Label_X,TD_Y,"Drift Points");
    TextDrawColor(TDLabels[0],COLOR_Label);
    TextDrawSetShadow(TDLabels[0],0);
    TextDrawSetOutline(TDLabels[0],1);
    TextDrawLetterSize(TDLabels[0],0.5,2);
    TextDrawBackgroundColor(TDLabels[0],COLOR_LabelOut);
    TextDrawFont(TDLabels[0],1);

    Spoiler anzeigen
    TDLabels[1]=TextDrawCreate(Label_X,TD_Y+50,"Drift Bonus");
    TextDrawColor(TDLabels[1],COLOR_Label);
    TextDrawSetShadow(TDLabels[1],0);
    TextDrawSetOutline(TDLabels[1],1);
    TextDrawLetterSize(TDLabels[1],0.5,2);
    TextDrawBackgroundColor(TDLabels[1],COLOR_LabelOut);
    TextDrawFont(TDLabels[1],1);

    Spoiler anzeigen
    TDLabels[2]=TextDrawCreate(Label_X,TD_Y+100,"Drift Cash");
    TextDrawColor(TDLabels[2],COLOR_Label);
    TextDrawSetShadow(TDLabels[2],0);
    TextDrawSetOutline(TDLabels[2],1);
    TextDrawLetterSize(TDLabels[2],0.5,2);
    TextDrawBackgroundColor(TDLabels[2],COLOR_LabelOut);
    TextDrawFont(TDLabels[2],1);

    Spoiler anzeigen
    new i;
    for(i=0;i<=MAX_PLAYERS;i++){
    TDValueDrift[i]=TextDrawCreate(Value_X,TD_Y+20,"0");
    TextDrawColor(TDValueDrift[i],COLOR_Value);
    TextDrawSetShadow(TDValueDrift[i],0);
    TextDrawSetOutline(TDValueDrift[i],1);
    TextDrawLetterSize(TDValueDrift[i],0.5,2);
    TextDrawBackgroundColor(TDValueDrift[i],COLOR_ValueOut);
    TextDrawFont(TDValueDrift[i],3);

    Spoiler anzeigen
    TDValueBonus[i]=TextDrawCreate(Value_X,TD_Y+70,"X1");
    TextDrawColor(TDValueBonus[i],COLOR_Value);
    TextDrawSetShadow(TDValueBonus[i],0);
    TextDrawSetOutline(TDValueBonus[i],1);
    TextDrawLetterSize(TDValueBonus[i],0.5,2);
    TextDrawBackgroundColor(TDValueBonus[i],COLOR_ValueOut);
    TextDrawFont(TDValueBonus[i],3);

    Spoiler anzeigen
    TDValueCash[i]=TextDrawCreate(Value_X,TD_Y+120,"$0");
    TextDrawColor(TDValueCash[i],COLOR_Value);
    TextDrawSetShadow(TDValueCash[i],0);
    TextDrawSetOutline(TDValueCash[i],1);
    TextDrawLetterSize(TDValueCash[i],0.5,2);
    TextDrawBackgroundColor(TDValueCash[i],COLOR_ValueOut);
    TextDrawFont(TDValueCash[i],3);
    }

    Spoiler anzeigen
    return 1;
    }

    Spoiler anzeigen
    public CheckPlayerState(){ //by Abhinav
    new i,cs;

    Spoiler anzeigen
    for(i=0;i<=MAX_PLAYERS;i++){
    cs=GetPlayerState(i);
    if(DriftMode[i] && cs==PLAYER_STATE_DRIVER && DriftPointsNow[i]>70){
    new Float:h;
    GetVehicleHealth(GetPlayerVehicleID(i),h);
    if(h<HealthInit[i]){
    KillTimer(DriftTimer[i]);
    DriftExit(i);
    GameTextForPlayer(i,"~n~~n~~n~~n~~n~~n~~n~~r~Boom",800,5);
    DriftMode[i]=false;
    }
    }
    if(cs==PLAYER_STATE_DRIVER && DriftMode[i]==false){
    if(GetVType(GetPlayerVehicleID(i))){
    DriftMode[i]=true;
    GetVehicleHealth(GetPlayerVehicleID(i),HealthInit[i]);
    AutoFixBool[i]=false;
    DriftTimer[i]=SetTimerEx("Drift", 200, true, "i", i);
    }
    }
    else if(cs!=PLAYER_STATE_DRIVER && DriftMode[i]==true){
    KillTimer(DriftTimer[i]);
    DriftMode[i]=false;
    AutoFixBool[i]=true;
    }
    else{}
    }
    return 1;
    }

    Spoiler anzeigen
    public AutoFix(){ // By abhinav
    new i;
    for(i=0;i<=MAX_PLAYERS;i++){
    if(AutoFixBool[i] && IsPlayerInAnyVehicle(i)){
    SetVehicleHealth(GetPlayerVehicleID(i),HealthInit[i]);
    }
    }
    }

    Spoiler anzeigen
    GetVType(vid){ // By Abhinav

    Spoiler anzeigen
    new Convertibles[4]={480, 533, 439, 555};
    new Industrial[26]={499, 422, 482, 498, 609, 524, 578, 455, 403, 414, 582, 443, 514, 413, 515, 440, 543, 605, 459, 531, 408, 552, 478, 456, 554};
    new LowRider[8]={536, 575, 534, 567, 535, 566, 576, 412};
    new OffRoad[13]={568, 424, 573, 579, 400, 500, 444, 556, 557, 470, 489, 505, 595};
    new Service[19]={416, 433, 431, 438, 437, 523, 427, 490, 528, 407, 544, 596, 596, 597, 598, 599, 432, 601, 420};
    new Saloon[35]={445, 504, 401, 518, 527, 542, 507, 562, 585, 419, 526, 604, 466, 492, 474, 546, 517, 410, 551, 516, 467, 600, 426, 436, 547, 405, 580, 560, 550, 549, 540, 491, 529, 421};
    new Sports[20]={602, 429, 496, 402, 541, 415, 589, 587, 565, 494, 502, 503, 411, 559, 603, 475, 506, 451, 558, 477};
    new Wagons[5]={418, 404, 479, 458, 561};

    Spoiler anzeigen
    new modelid=GetVehicleModel(vid);
    new i;
    for(i=0;i<3;i++){
    if(Convertibles[i]==modelid) return 1;
    }
    for(i=0;i<25;i++){
    if(Industrial[i]==modelid) return 1;
    }
    for(i=0;i<7;i++){
    if(LowRider[i]==modelid) return 1;
    }
    for(i=0;i<12;i++){
    if(OffRoad[i]==modelid) return 1;
    }
    for(i=0;i<19;i++){
    if(Service[i]==modelid) return 1;
    }
    for(i=0;i<35;i++){
    if(Saloon[i]==modelid) return 1;
    }
    for(i=0;i<20;i++){
    if(Sports[i]==modelid) return 1;
    }
    for(i=0;i<5;i++){
    if(Wagons[i]==modelid) return 1;
    }
    return 0;
    }


    Ich finde einfach nicht den punkt wo abgefragt wird ob es driftet oder nicht O.o.
    Es soll ganz simpel sein erstmal den Rest füge ich dann noch ein, aber mein Problem ist nur die abfrage.

    also es gibt ein Filterscript bei dem man für's driften Geld bekommt.
    Wenn du dort reinschaust hilf dir das vielleicht.


    Hab ich aber da ist immer so viel anderes dabei das man nichts davon versteht.
    Ich will ja nichts kopieren ich will es richtig verstehen und selbst machen!

    Moin, ich habe schon überall gesucht und gegooglet aber man findet einfach kein beispiel wie ich erkenne ob das Auto gerade driftet oder geradeaus fährt!
    Kann mir wer da behilflich sein?

    Moin, mein Problem ist das er egal ob der Spieler Admin ist oder nicht er den Befehl benutzen kann :O
    vielleicht sieht man so schon was daran falsch ist. (1 = Admin 0 = Kein Admin)


    if(!strcmp(strget(cmdtext, 0), "/givemoney"))
    {
    new giveplayer = strval(strget(cmdtext, 1));
    new cash = strval(strget(cmdtext, 2));
    if(dini_Isset(accFormat,"Admin") == 1)
    {
    GivePlayerMoney(giveplayer,cash);
    }


    else
    {
    SendClientMessage(playerid, COLOR_RED, "FAIL!");


    }


    return 1;
    }


    Hat sich auch ohne deine Version erledigt :)

    if(IsPlayerNPC(playerid)) return 0;//Fail? er bricht ab wenn der Spieler ein Bot ist?
    if(IsPlayerNPC(playerid))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "BUS1", true))
    {
    PutPlayerInVehicle(playerid, npc_bus1, 0);
    }
    return 1;
    }
    So?
    Das habe ich gemacht das er spawnt und nicht auf spawn klicken muss.

    Also, mein NPC spawnt zwar aber er steigt nicht in den Bus ein!


    public OnPlayerSpawn(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    if(IsPlayerNPC(playerid))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "BUS1", true))
    {
    PutPlayerInVehicle(playerid, npc_bus1, 0);
    }
    }
    return 0;
    }


    public OnGameModeInit()
    {
    ConnectNPC("BUS1","bus1");
    npc_bus1 = CreateVehicle(541, 1000.0,1000.0, 1000.0, 0.0, 10, 1, -1);


    SetGameModeText("JoHo");
    AddPlayerClass(0, 683.29998779297, -1210.9899902344, 19.200000762939, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    #include <a_npc>
    #define RECORDING "bus1"



    public OnRecordingPlaybackEnd()
    {
    StartRecordingPlayback(1, RECORDING);
    }


    public OnNPCEnterVehicle(vehicleid, seatid)
    {
    StartRecordingPlayback(1, RECORDING);
    }
    public OnNPCExitVehicle()
    {
    StopRecordingPlayback();
    }


    Was habe ich falsch gemacht??? :cursing:

    Hi, Ich Suche ein Drift Battle System...
    Es soll so gemacht sein das 2 Spieler gegeneinander nach Punkten Driften können ,Um überhaupt gegeneinander Driften zu können müssen beide ein Befehl wie z.b /drift 1 eingeben (1 = Strecke 1 z.b /drift 2 = Strecke 2) Dann wenn einer den Befehl eingegeben hat wird er mit einem Drift Auto zum Strecken Start Teleportiert Und der zweite Spieler kann solange nicht los fahren (er wird ja auch zu dem Start für den zweiten Spieler Teleportiert) bis der erste Spieler alle Checkpoint abgefahren hat und möglichst viel Punkte gesammelt hat,Wenn der erste Spieler dann am Ziel ist kann der zweite Spieler los fahren und auch die Checkpoint abfahren wenn dann beide am Ziel angekommen sind gewinnt der Spieler mit den meisten Punkten! (logisch), das wird dann mit einem Gewinn an Scor Punkten belohnt (Die bekommt der Verlierer abgezogen).