Waffenspiel (gungame)

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
  • Ich will gungame(waffenspiel) scripten aber nach dem man stirbt bekommt man keine Waffen, ich habe auch keine Ahnung wieso :S


    OnPlayerSpawn
    else if(dm[5][playerid] == 1)
    {
    new Random = random(sizeof(dmspawn));
    SetPlayerInterior(playerid,10);
    SetPlayerPos(playerid,dmspawn[Random][0],dmspawn[Random][1],dmspawn[Random][2]);
    switch(gunstreak[playerid])
    {
    case 1:
    {
    GivePlayerWeapon(playerid,23,1339);
    gunstreak[playerid] = 1;
    }
    case 2:
    {
    GivePlayerWeapon(playerid,32,1339);
    gunstreak[playerid] = 2;
    }
    case 3:
    {
    GivePlayerWeapon(playerid,25,1339);
    gunstreak[playerid] = 3;
    }
    case 4:
    {
    GivePlayerWeapon(playerid,4,1);
    gunstreak[playerid] = 3;
    }
    }
    }



    //OnPlayerDeath


    //gungame
    gunstreak[killerid] +=1;
    gunstreak[playerid] --;
    switch(gunstreak[killerid])
    {
    case 1:
    {
    GivePlayerWeapon(playerid,32,1337);
    gunstreak[killerid] = 1;
    }
    case 2:
    {
    GivePlayerWeapon(playerid,29,1337);
    gunstreak[killerid] = 2;
    }
    case 3:
    {
    GivePlayerWeapon(playerid,25,1337);
    gunstreak[killerid] = 3;
    }
    case 4:
    {
    GivePlayerWeapon(playerid,4,1);
    gunstreak[killerid] = 4;
    }
    case 5:
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(dm[5][i] == 1)
    {
    SpawnPlayer(i);
    gunstreak[i] = 0;
    gungameclose = 0;
    dm[5][i] = 0;
    Map[i] = 0;
    SendClientMessage(playerid,SERVER,"[SERVER] Die Runde ist vorbei!");
    }
    }
    }
    }

  • Um das mal klarzustellen, du kannst im Callback OnPlayerDeath meines Wissens nach keine Waffen vergeben.


    Dafür wird OnPlayerSpawn(playerid) {} benutzt..

    OnPlayerSpawn(playerid) {
    //Abfrage, welche Streak er hat... {
    //Waffen verteilen...
    //}
    return 1;
    }


    Hoffe das ist einigermaßen verstehbar. ;)
    //Edit umgeschrieben / verbessert


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

    Einmal editiert, zuletzt von BOMBER ()

  • Klar kann man unter OnPlayerDeath Waffen vergeben, macht aber nur Sinn, wenn man die Waffen nicht dem gestorbenen Spieler gibt, sondern z.b dem Killer (killerid)...


    B2T:
    Du switcht unter OnPlayerDeath den Killstreak von der Killerid, gibts aber Waffen an die PlayerID.. Ist recht komisch, oder? :D




    //OnPlayerDeath
    //gungame
    gunstreak[killerid] +=1;
    gunstreak[playerid] --;
    switch(gunstreak[killerid])
    {
    case 1:
    {
    GivePlayerWeapon(killerid,32,1337);
    gunstreak[killerid] = 1;
    }
    case 2:
    {
    GivePlayerWeapon(killerid,29,1337);
    gunstreak[killerid] = 2;
    }
    case 3:
    {
    GivePlayerWeapon(killerid,25,1337);
    gunstreak[killerid] = 3;
    }
    case 4:
    {
    GivePlayerWeapon(killerid,4,1);
    gunstreak[killerid] = 4;
    }


  • Danke ^^ Würde das so klappen das man wenn ein Spieler jemanden dann mit dem Messer killt, die Runde vorbei ist?
    ich habe es so würde es so gehen



    case 5:
    {
    if(dm[5][playerid] == 1 || killerid == 1)
    {
    SpawnPlayer(playerid);
    gunstreak[playerid] = 0;
    gungameclose = 0;
    dm[5][playerid] = 0;
    Map[playerid] = 0;
    SendClientMessage(playerid,SERVER,"[SERVER] Die Runde ist vorbei!");
    SpawnPlayer(killerid);
    gunstreak[killerid] = 0;
    gungameclose = 0;
    dm[5][killerid] = 0;
    Map[killerid] = 0;
    SendClientMessage(killerid,SERVER,"[SERVER] Die Runde ist vorbei!");
    }
    }

  • Je nach dem, für wen soll die Runde denn vorbei sein?
    Für killerid oder playerid?


    Und sonst einfach ne Abfrage unter OnPlayerDeath machen mit welcher Waffe gekillt wurde...


    if(GetPlayerWeapon(killerid) == 4){
    //GunGame beenden..
    }


    Wenn nicht für killerid sondern für playerid die Runde beendet werden soll, einfach anstatt "killerid", "playerid" einsetzen bei der if Abfrage ;)


    Ich sehe gerade das Du abfragst ob killerid == 1 ist...
    killerid == 1


    Macht wenig Sinn da killerid das gleiche wie playerid ist..
    Also würde das was DU da stehen hast nur funktionieren wenn die killerid ID 1 hat...


    Greetz
    #else


  • Halt alle in der Arena rausfliegen ^^ keine ahnung wie das gehen soll? villt eine Schleife? :s

  • Achso...
    Joa, einfach ne Schleife verwenden...


    for(new i = 0; i<MAX_PLAYERS; i++){
    if(dm[5][i] == 1){
    SpawnPlayer(i);
    gunstreak[i] = 0;
    gungameclose = 0;
    dm[5][i] = 0;
    Map[i] = 0;
    gunstreak[i] = 0;
    gungameclose = 0;
    dm[5][i] = 0;
    SendClientMessage(i,SERVER,"[SERVER] Die Runde ist vorbei!");
    }
    }