Beiträge von Kaliber

    Ich verstehe halt nicht sehr viel von Mathe. Daher weiß ich nicht, wie man "exponentiell" rechnet


    ist es da auch moeglich mit der E-Funktion zu arbeiten, bzw. den Wert von e mit ^Level?


    Ja ist es:


    //Schreib das oben in dein Skript
    #define e^(%0) floatpower(2.718281828459,(%0))


    //Nutzen kannst du es so:
    new level = GetPlayerScore(playerid),Float:r=floatdiv(random(100),10);
    new Float:kosten = 10*level*(!r?0.5:r)*e^(level);


    //Edit: Jetzt hast du genau deine 1. Formel :)


    mfg. :thumbup:

    Könntest du mir die Werte erklären?


    Dafür wurde das Wiki geschaffen: http://wiki.sa-mp.com/wiki/CreateExplosion_DE


    Hier eine Liste mit Explosions IDs: http://wiki.sa-mp.com/wiki/Explosion_List


    Wenn du so ne richtig fette Explosion willst:


    CreateExplosion(mines[b][e__X], mines[b][e__Y], mines[b][e__Z], 7, 10.0);


    @[LnD]JustMe.77: Ja dein Code wurde in BBCodes ungewandelt, schau nochmal (hab ihn grad editiert beim 1. fehlte das [b ]) :)


    mfg. :thumbup:

    oder muss das in mein Gamemode rein?


    Der Timer muss dahin, wo du den anderen Code auch hingetan hast...


    Wenn du das alles in ein Filterscript schreibst, dann musst du SetTimer natürlich unter OnFilterScriptInit schreiben :)


    Falls du das gemacht hast und es immernoch nicht geht, mach mal die Range höher (also unter @Bomb schreib es so):


    if(IsPlayerInRangeOfPoint(i,4.5,


    mfg. :thumbup:

    Kannst mir da auch noch helfen ?


    Da musst du sowas ungefähr machen:


    #define MAX_MINES 100


    enum e_Mines {
    e_model,
    Float:e__X,
    Float:e__Y,
    Float:e__Z
    };


    new mines[MAX_MINES][e_Mines],bool:mine_t[MAX_PLAYERS char];


    ocmd:mine(playerid)
    {
    if(mine_t{playerid}) return SendClientMessage(playerid,-1,"Bitte warte einen kurzen Moment, bevor du die Nächste Mine erstellst!");
    new m_idx = GetFreeMine();
    if(m_idx == MAX_MINES) return SendClientMessage(playerid,-1,"Es wurde bereits die maximale Anzahl an Minen erstellt!");
    new Float:p[4];
    GetPlayerPos(playerid,p[0],p[1],p[2]),GetPlayerFacingAngle(playerid,p[3]);
    const Float:distance = 0.75; //jetzt wäre die Bombe etwas weiter vorne
    p[0] += (distance * floatsin(-p[3], degrees));
    p[1] += (distance * floatcos(-p[3], degrees));
    mine_t{playerid} = true;
    mines[m_idx][e_model] = CreateObject(19602,p[0],p[1],p[2]-0.93,0,0,0);
    mines[m_idx][e__X] = p[0],mines[m_idx][e__Y] = p[1],mines[m_idx][e__Z] = p[2];
    ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,0,0,1);
    SetTimerEx("@ta",1000*5,0,"i",playerid);
    return 1;
    }


    @ta(i);@ta(i) return mine_t{i}=false;


    //Du brauchst einen Timer (unter OnGameModeInit)
    SetTimer("@Bomb",599,1);


    //Dann irgendwo außerhalb von Callbacks..etc
    @Bomb();@Bomb() {
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i) || mine_t{i}) continue;
    for(new b; b<MAX_MINES; b++) {
    if(!mines[b][e_model]) continue;
    if(IsPlayerInRangeOfPoint(i,2.5,mines[b][e__X],mines[b][e__Y],mines[b][e__Z])) { PlayerOnMine(i,b); break; }
    }
    }
    return 1;
    }


    stock PlayerOnMine(playerid, b) {
    //Hier ist halt die Explosion:
    CreateExplosion(mines[b][e__X], mines[b][e__Y], mines[b][e__Z], 12, 10.0);
    DestroyObject(mines[b][e_model]),mines[b][e_model]=0;
    SendClientMessage(playerid,-1,"BOOOOOOOOM!");
    return 1;
    }


    stock GetFreeMine() {
    for(new i; i<MAX_MINES; i++) if(!mines[i][e_model]) return i;
    return MAX_MINES;
    }


    mfg. :thumbup:


    //Edit: Kleinigkeiten
    Edit²:

    So würde er aber schon beim erstellen der Mine, die Mine zum explodieren bringen ^^


    Ahaha danke, daran habe ich gar nicht gedacht #gefixxt ^^

    Wie muss ich das ungefähr verändern?


    Da musst du ein bisschen rumprobieren:


    ocmd:mine(playerid)
    {
    new Float:p[4];
    GetPlayerPos(playerid,p[0],p[1],p[2]),GetPlayerFacingAngle(playerid,p[3]);
    const Float:distance = 0.75; //jetzt wäre die Bombe etwas weiter vorne
    p[0] += (distance * floatsin(-p[3], degrees));
    p[1] += (distance * floatcos(-p[3], degrees));
    CreateObject(19602,p[0],p[1],p[2]-0.93,0,0,0);
    ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,0,0,1);
    return 1;
    }


    mfg. :thumbup:

    Was hab ich falsch gemacht?


    Schreibe den Command so:


    CMD:back(playerid, params[])
    {
    if(PlayerAFK[playerid] == 1)
    {
    new string[128];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    TogglePlayerControllable(playerid,true);
    format(string, sizeof(string), "SERVER: %s spielt nun weiter. /back",playername);
    SendClientMessageToAll(LILA,string);
    PlayerAFK[playerid] = 0;
    return true;
    }
    return SendClientMessage(playerid,ROT,"FEHLER: Du bist nicht afk!");
    }



    public AFK(playerid)
    {
    new string[128];
    new playername[MAX_PLAYER_NAME];
    KillTimer(isAFK);
    TogglePlayerControllable(playerid,false);
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string, sizeof(string), "SERVER: %s ist nun afk. /afk",GetName);
    SendClientMessageToAll(LILA,string);
    SendClientMessage(playerid,WEISS,"Beutze /back um weiter zu spielen.");
    PlayerAFK[playerid] = 1;
    return true;
    }


    //Das hier schreibe unter OnPlayerCommandText ganz nach oben!
    if(PlayerAFK[playerid] == 1)
    {
    SendClientMessage(playerid,ROT,"FEHLER: Während du afk bist kannst du keine Befehle benutzen. Um aus dem afk Modus heraus zu gelangen tippe /back ein.");
    return true;
    }


    mfg. :thumbup:

    -Ein Objekt erzeugen


    Naja so z.B.


    #define PreloadAnim(%0,%1) ApplyAnimation(%0,%1,"null",0.0,0,0,0,0,0)


    //Unter OnPlayerRequestClass
    PreloadAnim(playerid,"BOMBER");


    ocmd:legeBombe(playerid)
    {
    new Float:p[3];
    GetPlayerPos(playerid,p[0],p[1],p[2]);
    CreateObject(1252,p[0],p[1],p[2]-0.5,0,0,0);
    ApplyAnimation(playerid,"BOMBER","BOM_PLANT_LOOP",4.0,0,0,0,0,1);
    return 1;
    }


    mfg. :thumbup:

    Nun als erstes, schreib es einfach mal so:


    case DIALOG_FRAKBANK_EINZAHLEN:
    {
    if(response == 0) return ShowPlayerDialog(playerid,DIALOG_FRAKBANK,DIALOG_STYLE_LIST,"Fraktionsbank","Ausrüsten\nEinzahlen\nAuszahlen\nMaterial\nDrogen","Weiter","Abbruch");
    new cmd = strval(inputtext),string[350],frakid = Spieler[playerid][pFraktion];
    if((Spieler[playerid][pGeld] - cmd) < 0) return SendClientMessage(playerid,ROT,"Du hast nicht genug Geld!");
    if(!IsNumeric(inputtext)){
    format(string,sizeof(string),"Gebe bitte nun den Betrag ein, welchen du in die Fraktionkasse einzahlen möchtest!\nDerzeitiger Fraktionskassen Stand: %i$",FrakInfo[frakid][frakgeld]);
    ShowPlayerDialog(playerid,DIALOG_FRAKBANK_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionsbank Einzahlung",string,"Weiter","Abbruch");
    return SendClientMessage(playerid,ROT,"Es sind nur Zahlen möglich!");
    }
    if(cmd < 1 || cmd > 10000) {
    format(string,sizeof(string),"Gebe bitte nun den Betrag ein, welchen du in die Fraktionkasse einzahlen möchtest!\nDerzeitiger Fraktionskassen Stand: %i$",FrakInfo[frakid][frakgeld]);
    ShowPlayerDialog(playerid,DIALOG_FRAKBANK_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionsbank Einzahlung",string,"Weiter","Abbruch");
    return SendClientMessage(playerid,ROT,"Betrag nur zwischen 1 und 10.000$ möglich!");
    }
    FrakInfo[frakid][frakgeld] += cmd,ACMoney(playerid, -cmd);
    format(string,sizeof(string),""#HTML_WHITE"[ "#HTML_LOGIN"FrakBank: "#HTML_WHITE"Das Mitglied "#HTML_ORANGE"%s "#HTML_WHITE"hat so eben "#HTML_GREEN"%i$ "#HTML_WHITE"in der Fraktionkasse eingezahlt! "#HTML_WHITE"Neuer Stand: "#HTML_ORANGE"%i$ ]",SpielerName(playerid),cmd,FrakInfo[frakid][frakgeld]);
    FraktionsChat(Spieler[playerid][pFraktion],WEISS,string);


    format(string,sizeof(string),"INSERT INTO "#DATENBANK"_frakgeldlog (`fID`,`name`,`count`,`timestamp`,`op`) VALUES ('%d','%s','%d','%d','1')",frakid,SpielerName(playerid),cmd,gettime());
    mysql_function_query(MYSQLVerbindung,string,false,"","");
    ShowPlayerDialog(playerid,DIALOG_FRAKBANK,DIALOG_STYLE_LIST,"Fraktionsbank","Ausrüsten\nEinzahlen\nAuszahlen\nMaterial\nDrogen","Weiter","Abbruch");
    return true;
    }
    }
    return true;


    Probier das mal so aus, sollte es nicht klappen, mach es einfach so:


    frakid = Spieler[playerid][pFraktion]+1;


    mfg. :thumbup: