Beiträge von Shikuto

    Hallo hab mal was gescriptet das sich die HP reduziert..


    Nun will ich das wenn die HP 5 % beträgt der timer gestoppt wird... und der spieler wird ohnmächtig kann sich also nicht Bewegen es wird eine Passende animation gespielt


    Nur wie stopp ich den timer ? in einem Public? 8|
    Das ganze befindet sich als Filterscript


    Folgendes script sieht so aus



    //das Forward
    forward downhealth(playerid);


    // Bei OnFilterScriptInit
    SetTimer("downhealth", 5000, 1),


    //das Public ....
    public downhealth(playerid)
    {
    new Float:bob2;
    for(new i;i<MAX_PLAYERS;i++)
    if(GetPlayerHealth(i,bob2))
    {
    SetPlayerHealth(i,bob2-1);
    if(bob2 == 5 )
    TogglePlayerControllable(i,0); // Spieler ist schonmal Gefreezed aber der Timer läuft weiter
    // Hier soll die Passende animation rein und der Timer soll gestoppt werden
    }

    }


    // Generell soll der Timer anhalten und nicht weiter die HP reduzieren..
    // Nur erst dann wenn die HP wieder mehr als 5 ist..
    // Wie geht sowas ?



    Ich hoffe ihr wisst was ich versuche xD

    Sorry, wenn ich jetzt etwas sarkastisch klinge, ich hab schon ein wenig getrunken, aber:
    Meinst du nicht auch, dass du dir dringend die Grundlagen von PAWN durchlesen solltest?



    NEIN ... Nur weil du der meinung bist das ich das so angeblich raffe ?
    Jeder mensch lernt anders ...


    Der eine durchs Lesen
    der Andere Anhand von Vorgaben Beispielen etc


    //edit
    Ich weis das dieses Thema schon als erledigt ist aber deswegen ein neues eröffnen ist doch sinnlos
    Folgendes Problem


    Ich habs jetzt soweit hinbekommen das er zufällig eine anzahl an Geldscheinen dropt..


    Die werte werden auch gespeichert


    Nur beim aufsammeln sagt der mir einen anderen wert:


    Hier mal die 2 Callbacks finde irgendwie den Fehler nicht:



    // Ganz oben die Variablen


    new barre1;
    new barre2;
    new barre3;
    new barre4;
    new barre5;
    new Money[MAX_PLAYERS];
    new Money1[MAX_PLAYERS];
    new Money2[MAX_PLAYERS];
    new Money3[MAX_PLAYERS];
    new Money4[MAX_PLAYERS];



    //OnPlayer Death
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new drop = random(5);
    if(drop == 0)
    {
    new kh1 = random(30);
    Money[playerid] = kh1;
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    barre1 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    GivePlayerMoney(playerid, -kh1);
    new verloren[80];
    format(verloren,sizeof(verloren),"%d $ Verloren", Money[playerid]);
    GameTextForPlayer(playerid, verloren, 5000, 3);
    }
    else if(drop == 1)
    {
    new kd1 = random(35);
    new kd2 = random(35);
    Money[playerid] = kd1;
    Money1[playerid] = kd2;
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    barre1 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre2 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    GivePlayerMoney(playerid, -kd1);
    GivePlayerMoney(playerid, -kd2);
    new kd = kd1 + kd2;
    new verloren[80];
    format(verloren,sizeof(verloren),"%d $ Verloren", kd);
    GameTextForPlayer(playerid, verloren, 5000, 3);
    }
    else if(drop == 2)
    {
    new kg1 = random(40);
    new kg2 = random(40);
    new kg3 = random(40);
    Money[playerid] = kg1;
    Money1[playerid] = kg2;
    Money2[playerid] = kg2;
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    barre1 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre2 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre3 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    GivePlayerMoney(playerid, -kg1);
    GivePlayerMoney(playerid, -kg2);
    GivePlayerMoney(playerid, -kg3);
    new kg = kg1 + kg2 + kg3;
    new verloren[80];
    format(verloren,sizeof(verloren),"%d $ Verloren", kg);
    GameTextForPlayer(playerid, verloren, 5000, 3);
    }
    else if(drop == 3)
    {
    new kf1 = random(45);
    new kf2 = random(45);
    new kf3 = random(45);
    new kf4 = random(45);
    Money[playerid] = kf1;
    Money1[playerid] = kf2;
    Money2[playerid] = kf3;
    Money3[playerid] = kf4;
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    barre1 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre2 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre3 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre4 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    GivePlayerMoney(playerid, -kf1);
    GivePlayerMoney(playerid, -kf2);
    GivePlayerMoney(playerid, -kf3);
    GivePlayerMoney(playerid, -kf4);
    new kf = kf1 + kf2 + kf3 + kf4;
    new verloren[80];
    format(verloren,sizeof(verloren),"%d $ Verloren", kf);
    GameTextForPlayer(playerid, verloren, 5000, 3);
    }
    else if(drop == 4)
    {
    new kc1 = random(50);
    new kc2 = random(50);
    new kc3 = random(50);
    new kc4 = random(50);
    new kc5 = random(50);
    Money[playerid] = kc1;
    Money1[playerid] = kc2;
    Money2[playerid] = kc3;
    Money3[playerid] = kc4;
    Money4[playerid] = kc5;
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    barre1 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre2 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre3 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre4 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    barre5 = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    GivePlayerMoney(playerid, -kc1);
    GivePlayerMoney(playerid, -kc2);
    GivePlayerMoney(playerid, -kc3);
    GivePlayerMoney(playerid, -kc4);
    GivePlayerMoney(playerid, -kc5);
    new kc = kc1 + kc2 + kc3 + kc4 + kc5;
    new verloren[80];
    format(verloren,sizeof(verloren),"%d $ Verloren", kc);
    GameTextForPlayer(playerid, verloren, 5000, 3);
    }
    return 1;
    }


    // OnPlayerPickupPickUp
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == barre1)
    {
    new wtf[80];
    format(wtf, sizeof(wtf), "Du hast %d $ Gefunden",Money[playerid]);
    GameTextForPlayer(playerid, wtf, 5000, 3);
    GivePlayerMoney(playerid,Money[playerid]);
    DestroyPickup(barre1);
    }
    else if(pickupid == barre2)
    {
    new wtf2[80];
    format(wtf2, sizeof(wtf2), "Du hast %d $ Gefunden",Money1[playerid]);
    GameTextForPlayer(playerid, wtf2, 5000, 3);
    GivePlayerMoney(playerid,Money1[playerid]);
    DestroyPickup(barre2);
    }
    else if(pickupid == barre3)
    {
    new wtf3[80];
    format(wtf3, sizeof(wtf3), "Du hast %d $ Gefunden",Money2[playerid]);
    GameTextForPlayer(playerid, wtf3, 5000, 3);
    GivePlayerMoney(playerid,Money2[playerid]);
    DestroyPickup(barre3);
    }
    else if(pickupid == barre4)
    {
    new wtf4[80];
    format(wtf4, sizeof(wtf4), "Du hast %d $ Gefunden",Money3[playerid]);
    GameTextForPlayer(playerid, wtf4, 5000, 3);
    GivePlayerMoney(playerid,Money3[playerid]);
    DestroyPickup(barre4);
    }
    else if(pickupid == barre5)
    {
    new wtf5[80];
    format(wtf5, sizeof(wtf5), "Du hast %d $ Gefunden",Money4[playerid]);
    GameTextForPlayer(playerid, wtf5, 5000, 3);
    GivePlayerMoney(playerid,Money4[playerid]);
    DestroyPickup(barre5);
    }

    }


    Frage: Wo Versteckt sich der Fehler ?
    Oder wie Kann ich es besser schreiben ?


    //edit
    Eben ausprobiert ich sterbe .. Verlier nur einen Geldbündel .. der den wert 95 $ Beträgt obwohl laut code ein Bündel gedropt werden soll wenn
    drop == 0 ist
    speicher dann den wert also kh1 = zufällige zahl bis 30 in Money[playerid]


    Wieso Speichert er 95 $ ?

    habe soeben mal


    new Pushgenutzt[MAX_PLAYERS];
    in einem Blank scribt


    Oben unter den ganzen defines etc gesetzt


    und Pushgenutzt[playerid] = 0;
    Unter OnPlayerConnect


    Bekomme keine fehler :)

    Nimm mal die -1 raus.. da laut pwn quelle es heist AddStaticVehicle(id,x,y,z,angle,color1,color2);


    also ist ein wert zufiel


    der einzige wo ich ein respawn_delay wert sehe ist bei AddStaticVehicleEx(id,x,y,z,angle,color1,color2,respawn_delay); laut pwn syntax

    Die Frage hierbei ist wie werden die autos Erstellt?
    Gibt es ein Respawn wert?
    Was genau versuchst du u machen ?


    Der Respawnwert ist eigentlich Optional bel CreateVehicle


    um das respawnen u deaktivieren setz anstatt der 0 eine -1

    sollte man nicht bedenken ob der wert eine zahl ist oder ein wort ? in dem falle


    dini_Set() = für buchstaben
    dini_IntSet() = für Zahlen etc


    Oder verwechsel ich grad was


    //edit
    und die ; nicht vergessen hinter dini_Set(); bzw dini_IntSet();

    Man Sagte mir ich soll mit for schleifen arbeiten aber hab mich noch nie damit befasst :(


    erstellen tut ers ja aber es passiert 0 wenn ich reinlauf oder so...



    //edit
    So Gelöst das Geld wird gedroppt aus einem zufallswert vom gesamt wert....


    Frage: Wie kann ich jetzt dann ausgeben


    beim aufsammeln du hast Wert in der variable also Money[playerid] aufgesammelt..


    Die Calls soweit;



    // Todescallback


    public OnPlayerDeath(playerid, killerid, reason)
    {
    new kohle = GetPlayerMoney(playerid);
    new koge = random(kohle);
    new kh = koge;
    Money[playerid] = kh;
    GivePlayerMoney(playerid,-kh);
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    barre = CreatePickup(1212, 23, x+2.0, y+2.0, z, 0);
    return 1;
    }


    // Aufsammlung


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == barre)
    {
    GivePlayerMoney(playerid,Money[playerid]);
    DestroyPickup(barre);
    }
    }


    Das hab ich ja jett so ... aber wenn ich reilauf passiert nix :(



    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == 1212)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerMoney(i) <= 0 || GetPlayerMoney(i) >= 0) {
    GivePlayerMoney(playerid,Money[playerid]);
    DestroyPickup(pickupid);
    }
    }
    }
    return 1;
    }



    //edit das Pickup bleibt da ich bekomm das geld nicht und es wird nichtmal zerstört

    Ich möchte dir halt nicht den ganzen Code vorschreiben , damit du auch selber etwas machst ;)
    Ja hier
    new moneyar = money - random(money); Mit MAX_PLAYERS arbeiten ;)


    Ich lern aber so am besten jeder lernt und versteht dinge anders..


    aber das scheinen nicht viele zu wissen
    Ich lern anhand eines Vorgegebenen beispiels


    /edit also ich habs mal so gemacht funktioniert das auch ?



    // oben bei den news


    new Money[MAX_PLAYERS]:
    new Float:PPos[MAX_PLAYERS][3];


    // die Callbacks


    public OnPlayerDeath(playerid, killerid, reason)
    {
    Money[playerid] = GetPlayerMoney(playerid);
    CreatePickup(1212,23,PPos[playerid][0]+2.0,PPos[playerid][1]+2.0,PPos[playerid][2]+2.0,0);
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == 1212)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerMoney(i) <= 0 || GetPlayerMoney(i) >= 0) {
    GivePlayerMoney(playerid,Money[playerid]);
    DestroyPickup(pickupid);
    }
    }
    }
    return 1;
    }

    hmm problem wäre doch dann das dann jeder andere das geld bekommt..
    soll ja nicht sein
    Der Spieler stirb und das Geld wird in dem Picup gesavt
    Sodas wenn ein anderer das pickup aufnimmt nur den gespeicherten wert bekommt..

    ich hab noch nie mit for schleifen gearbeitet..
    Kannst du mir ein Beispiel Geben ? hät ich vllt beim erstellen oben ?


    new geldbarren[MAX_PLAYERS];


    nemen sollen und dann
    geldbarren[playerid] = CreatePickup?


    Hilf mir mal..
    Lieb schau :)