Problem mit DM in VirtuellerWelt

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
  • Hallo Community,


    Ich habe ein Problem mit meinem Deathmatch. Unzwar habe ich versucht ein DM zu machen wo man sich mit /dm hinporten kann dann bin ich in der Virtuellen Welt beim DM wenn ich jetzt sterbe soll ich wieder im DM spawnen, so jetzt spawne ich für ca. 3 Sekunden an dem Punkt wo ich soll mit 0 Health, dann sterbe ich noch mal und spawne dann an dem Punkt wo ich Normaler weise im Freeroam Spawne bin aber noch in der DM Welt.


    Hier die PawnCode um ins DM zu kommen:
    if (strcmp("/dm", cmdtext, true, 10) == 0)
    {


    SetPlayerVirtualWorld(playerid, dm);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du bist jetzt in der Deathmatchwelt");
    GivePlayerWeapon(playerid, 8, 1);
    GivePlayerWeapon(playerid, 24, 100);
    GivePlayerWeapon(playerid, 31, 500);
    GivePlayerWeapon(playerid, 25, 100);
    GivePlayerWeapon(playerid, 34, 20);
    GivePlayerWeapon(playerid, 17, 10);
    GivePlayerWeapon(playerid, 28, 400);


    new spawns = random(10);
    switch(spawns)
    {
    case 0: SetPlayerPos(playerid, 18.7913,2218.5874,123.9989);
    case 1: SetPlayerPos(playerid, 20.8172,2250.8987,127.0726);
    case 2: SetPlayerPos(playerid, -33.6166,2260.8718,118.9948);
    case 3: SetPlayerPos(playerid, -58.7314,2258.6785,118.9889);
    case 4: SetPlayerPos(playerid, -84.2830,2242.0073,120.7506);
    case 5: SetPlayerPos(playerid, -87.0715,2271.8870,124.2536);
    case 6: SetPlayerPos(playerid, -103.6262,2281.2163,120.4530);
    case 7: SetPlayerPos(playerid, -68.0938,2284.1624,118.8010);
    case 8: SetPlayerPos(playerid, 40.8716,2260.0850,124.3020);
    case 9: SetPlayerPos(playerid, 38.5382,2243.4976,126.4071);
    }
    return 1;
    }


    Hier der Code um DM zu verlassen und wieder in den Freeroam zu kommen:
    if (strcmp("/free", cmdtext, true, 10) == 0)
    {
    SetPlayerVirtualWorld(playerid, Free);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du bist jetzt in der Freeroamwelt");
    SetPlayerPos(playerid, 2361.7505,1049.8511,18.3200);
    ResetPlayerWeapons(playerid);
    return 1;
    }


    Und hier der Code wo man Spawnen Soll wenn man im Dm gestorben ist:
    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(GetPlayerVirtualWorld(playerid) == 1)
    {


    GivePlayerWeapon(playerid, 8, 1);
    GivePlayerWeapon(playerid, 24, 100);
    GivePlayerWeapon(playerid, 31, 500);
    GivePlayerWeapon(playerid, 25, 100);
    GivePlayerWeapon(playerid, 34, 20);
    GivePlayerWeapon(playerid, 17, 10);
    GivePlayerWeapon(playerid, 28, 400);
    SetPlayerPos(playerid, 18.7913,2218.5874,123.9989);
    }
    return 1;
    }


    Danke schon mal im Vorraus

    LG Pumer

  • public OnPlayerDeath(playerid, killerid, reason)
    {
    if(GetPlayerVirtualWorld(playerid) == 1)
    {


    GivePlayerWeapon(playerid, 8, 1);
    GivePlayerWeapon(playerid, 24, 100);
    GivePlayerWeapon(playerid, 31, 500);
    GivePlayerWeapon(playerid, 25, 100);
    GivePlayerWeapon(playerid, 34, 20);
    GivePlayerWeapon(playerid, 17, 10);
    GivePlayerWeapon(playerid, 28, 400);
    SetPlayerPos(playerid, 18.7913,2218.5874,123.9989);
    SetPlayerHealth(playerid, 100);
    SetPlayerVirtualWorld(playerid, dm);
    }
    return 1;
    }


    Sorry , dass ich es nicht mit /pwn Quelltext gemacht habe, aber das spinnt irgendwie gerade bei mir , versuch es mal aber so , wie ich es oben gepostet habe.


    Lg
    Spider

  • Ne leider net Gleicher Effekt wie vorher heist das wenn ich gestorben bin spawne ich nich noch mal für 3 Sekunden im DM sondern dierekt nach dem ich gestorben bin am Freeroam Startpunkt und wenn ich SetPlayerHealth Raus mache spawne ich wieder für 3 Sekunden am DM und sterbe dann noch mal blablabla gleicher effekt wie vorher ;(

    LG Pumer

  • Nach OnPlayerDeath wird OnPlayerSpawn aufgerufen. D.H. wenn du in OnPlayerSpawn den Spieler an eine bestimmte Position teleportierst, ist dein Code unter OnPlayerDeath nutzlos.


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(GetPlayerVirtualWorld(playerid) == 1)
    {
    SetPVarInt(playerid,"dmtot",1);
    }
    return 1;
    }
    public OnPlayerSpawn(playerid)
    {
    if(GetPVarInt(playerid,"dmtot")==1)
    {
    GivePlayerWeapon(playerid, 8, 1);
    GivePlayerWeapon(playerid, 24, 100);
    GivePlayerWeapon(playerid, 31, 500);
    GivePlayerWeapon(playerid, 25, 100);
    GivePlayerWeapon(playerid, 34, 20);
    GivePlayerWeapon(playerid, 17, 10);
    GivePlayerWeapon(playerid, 28, 400);
    SetPlayerPos(playerid, 18.7913,2218.5874,123.9989);
    SetPVarInt(playerid,"dmtot",0);
    }
    else
    // Restlicher Code
    }