Beiträge von Mario2323

    so jetzt habe ich mal paar ideen zusammen gefasst.


    aber so richtig klappen tut das nicht.



    Deklaration:
    new indm[MAX_PLAYERS];


    Comand Script:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256];
    new idx;
    if(SpielerImGebiet(playerid,3938.0364,-2359.5403,3767.1995,-2859.7549))
    {
    cmd = strtok(cmdtext, idx);
    if (strcmp(cmdtext, "/dmoff", true)==0)
    {
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    indm[playerid] = 0;
    return 1;
    }
    //code der nur im dm1 benutzt werden darf
    }
    else
    {
    cmd = strtok(cmdtext, idx);
    //code der auserhalb vom dm1 benutzt wird
    if (strcmp (cmd, "/dm1", true) == 0)
    {
    SetPlayerPos (playerid,3937.511,-2651.402,56.542);
    GivePlayerWeapon(playerid, 34, 1000);
    GivePlayerWeapon(playerid, 30, 600);
    GivePlayerWeapon(playerid, 29, 600);
    GivePlayerWeapon(playerid, 31, 600);
    GivePlayerWeapon(playerid, 28, 600);
    GivePlayerWeapon(playerid, 32, 600);
    GivePlayerWeapon(playerid, 26, 500);
    indm[playerid] = 1;
    new nametele[MAX_PLAYER_NAME];
    new string1[48];
    GetPlayerName(playerid, nametele, sizeof(nametele));
    format(string1, sizeof(string1), "%s ist zu /dm1 gegangen.", nametele );
    SendClientMessageToAll(0xAA3333AA, string1);
    return 1;
    }
    }
    return 1;
    }


    OnPlayerSpawn Funktion:
    public OnPlayerSpawn(playerid)
    {
    if(indm[playerid] == 1 )
    {
    SetPlayerPos (playerid,3937.511,-2651.402,56.542);
    GivePlayerWeapon(playerid, 34, 1000);
    GivePlayerWeapon(playerid, 30, 600);
    GivePlayerWeapon(playerid, 29, 600);
    GivePlayerWeapon(playerid, 31, 600);
    GivePlayerWeapon(playerid, 28, 600);
    GivePlayerWeapon(playerid, 32, 600);
    GivePlayerWeapon(playerid, 26, 500);
    SetPlayerWeather(playerid,10);
    SetPlayerInterior(playerid,0);

    }
    else
    {


    SetPlayerWeather(playerid,10);
    SetPlayerInterior(playerid,0);
    }
    return 1;
    }


    OnPlayerdeath Funktion:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(indm[playerid] == 1)
    {
    }
    else
    {
    new playercash;
    if(killerid == INVALID_PLAYER_ID) {
    SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
    GivePlayerMoney(playerid, - 200);
    }
    else {
    SendDeathMessage(killerid,playerid,reason);
    SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
    SetPlayerScore(playerid,GetPlayerScore(playerid)-1);
    playercash = GetPlayerMoney(playerid);
    if (playercash > 0) {
    GivePlayerMoney(killerid, 200);
    GivePlayerMoney(playerid, - 200);
    }
    }
    }
    return 1;
    }


    If spielerimgebiet funktion


    SpielerImGebiet(playerid,Float:minimal_x,Float:minimal_y,Float:maximal_x,Float:maximal_y){
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    if(x >= minimal_x && x <= maximal_x && y >= minimal_y && y <= maximal_y)
    {
    return 1;
    }
    return 0;
    }


    Dann noch:


    public OnPlayerUpdate(playerid)
    {
    if(SpielerImGebiet(playerid,3938.0364,-2359.5403,3767.1995,-2859.7549))
    {
    indm[playerid] = 0;
    }
    return 1;
    }


    frage wo liegt der fehler

    Hi ihr,


    ich habe einige gedankenslücken und probleme.


    Ich möchte in mein multiscript(Stunt/DM/Race) eine DM funktion reinarbeiten.


    Ich möchte nicht den ganzen Server DM machen, da es viele dm mods gibt, aber keinen um temporär das zu machen.


    Darum frag ich euch, um meine Gedankenslücken zu füllen.


    Also ich mir das so gedacht:


    wenn Spieler /dm ist soll der Server bescheid wissen aha er ist DM gegangen.
    wenn er dm ist sind paar befehle deaktiviert.


    dann beim Tot(das ist einfach zu realisieren) soll keine tot in der totes liste angezeigt werden und beim respwan direkt wieder zu dm gehen.


    um raus zu kommen soll /dmoff geschrieben werden.... und alle befehle wieder aktiviert werden.



    Wie ist das am besten zu realisieren? ich weiß, dass man da mit vielen if bedinungen abreiten muss.
    und wer sowas ähnliches hat kann vllt.,,wenn er freundlich ist, paar codeschnipsel posten.



    MfG Mario2323

    danke für die schnelle anwort
    //EDIT: 2 Posts, die nur 3 Stunden auseinander liegen und noch keiner geantwortet hat, kann man auch den vorherigen Post editieren


    Hi.


    Kurze frage ist es irgendwie möglich dei stunts zu unterdrücken?


    ich mein wenn man z.B. durch die luft fliegt und auf kommt bekommt man geld und ne stunt anzeige wird angezeigt.


    ist das möglich es zu unterdrücken?


    MfG Mario2323

    danke für deine hilfe nur kommt immer nur die player id 0, obwohl andere ids gefragt werden


    script:




    public SpielerImGebiet(playerid,Float:minimal_x,Float:minimal_y,Float:maximal_x,Float:maximal_y){
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    if(x >= minimal_x && x <= maximal_x && y >= minimal_y && y <= maximal_y) {return 1;}
    return 0;
    }
    public carzone(playerid)
    {
    if(SpielerImGebiet(playerid,-2344,-1647,-2303,-1620))
    {
    printf("%d",playerid);
    new vehid = GetPlayerVehicleID(playerid);
    SetVehicleHealth(vehid, 1000);
    }
    }
    forward für beide funktionen habe ich gemacht


    edit: und der set timer sieht so aus SetTimer("carzone", 100, 1);

    sry wegen doppel post haber ich habe immernoch das problem, womit ich nicht weiter komme.


    wie gesagt habe ich diesen script erstellt:


    public carzone(playerid)
    {
    new carx;
    new cary;
    new carz;
    new vehid = GetPlayerVehicleID(playerid);
    GetVehiclePos(vehid, Float:carx, Float:cary, Float:carz);
    new carx1 = -2322;
    new carx2 = -1618;
    new cary1 = -2322;
    new cary2 = -1617;
    new carz1 = -2319;
    new carz2 = -1613;
    new caru1 = -2319;
    new caru2 = -1612;
    if(carx < carx1 && cary < carx2)
    {
    if(carx < cary1 && cary < cary2)
    {
    if(carx > carz1 && cary > carz2)
    {
    if(carx > caru1 && cary > caru2)
    {
    SetVehicleHealth(vehid, 1000);
    }
    }
    }
    }
    }

    nur wenn ich in dieser zone bin funktioniert das nicht.


    ich habe bereits ne forward deklaration gemacht und n timer gesetzt (alle 100 milisekunden checkt er.)


    ich glaube das die if bedingungen falsch sind.


    kann mir einer helfen?


    MfG Mario2323


    PS: hier nochmal ein bild mit einer test zone:



    würdest du mir dann die ganze funktion machen, aals beispiel und wie ich die aufrufe wäre net


    dann kann ich an anderen stellen auch sollche zonen mmmmachen


    danke schonmal

    sry wegen doppel post.


    ich habe jetzt was gemacht, was auch klappen müsste. nur ich mein problem wie rufe ich diese funktion auf?




    public carzone(playerid)
    {
    new carx;
    new cary;
    new carz;
    new vehid = GetPlayerVehicleID(playerid);
    GetVehiclePos(vehid, Float:carx, Float:cary, Float:carz);
    new carx1 = -2322;
    new carx2 = -1618;
    new cary1 = -2322;
    new cary2 = -1617;
    new carz1 = -2319;
    new carz2 = -1613;
    new caru1 = -2319;
    new caru2 = -1612;
    if(carx < carx1 && cary < carx2)
    {
    if(carx < cary1 && cary < cary2)
    {
    if(carx > carz1 && cary > carz2)
    {
    if(carx > caru1 && cary > caru2)
    {
    SetVehicleHealth(vehid, 100);
    }
    }
    }
    }
    }


    diese funktion soll ausgeführt werden ohne auf ein ereigniss zu reagieren.


    sprich der server soll checken ob sich jemand in diesen cords befindet und das auto heilen.

    nein damit checkt man im welchem land abschnitt man ist.


    kennt jemand NSG server? wenn man da zu /speed geht und so geht das auto nicht kaputt

    Hallo liebe Community.


    Ich erstelle gerade ein script für unserem Server.


    Jetzt habe ich ein Problem.


    Ich möchte eine Carzone erstellen, wo die Auto´s nicht kaputt gehen können z.w. wieder repariert werden, wenn dies fast kaputt ist.


    Wie würde das funktionieren?


    mit CreateZone erstelle ich ja nur ein ganggebiet.


    wer mir helfen kann sollte bitte schreiben.


    MfG Mario2323