Spawnweapon

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Spawnweapon

      Hallo leute!

      Ich hab mir meine Spawnwaffen geändert nur aug WEAPON_GRANDE, jedoch wenn ich die Waffe change hab ich wieder den Hammer & Pistole in der Hand was soll ich tun?


      m_EmoteStop = -1;
      m_LastAction = -1;
      m_ActiveWeapon = WEAPON_GRENADE;
      m_LastWeapon = WEAPON_HAMMER;
      m_aWeapons[m_ActiveWeapon].m_Ammo = 10;
    • m_ActiveWeapon beschreibt deine aktuelle Waffe, und m_LastWeapon deine letzte (wie es die namen schon verraten)
      diese Variablen zu setzen hindert den spieler jedoch nicht die waffe zu wechseln.

      Um nur den Granatwerfer zu erlauben änderst du deinen code ein wenig ab:
      m_EmoteStop = -1;
      m_LastAction = -1;
      m_ActiveWeapon = WEAPON_GRENADE;
      m_LastWeapon = WEAPON_GRENADE;
      m_aWeapons[m_ActiveWeapon].m_Ammo = 10;
      m_aWeapons[m_ActiveWeapon].m_Got = true;
      m_aWeapons[WEAPON_HAMMER].m_Got = false;
      m_aWeapons[WEAPON_GUN].m_Got = false;

      Falls ich dich falschverstanden habe und du nur das Problem hast, dass du WEAPON_GRENADE nicht mehr auswählen kannst muss du einfach hinzufügen: m_aWeapons[WEAPON_GRENADE].m_Got = true; ODER m_aWeapons[m_ActiveWeapon].m_Got = true; in deinem beispiel sind beide Varianten denkbar ;)


      EDIT: WICHTIG! der Aufruf GameServer()->m_pController->OnCharacterSpawn(this); führt folgenden Code aus:

      Quellcode

      1. void IGameController::OnCharacterSpawn(class CCharacter *pChr)
      2. {
      3. // default health
      4. pChr->IncreaseHealth(10);
      5. // give default weapons
      6. pChr->GiveWeapon(WEAPON_HAMMER, -1);
      7. pChr->GiveWeapon(WEAPON_GUN, 10);
      8. }

      somit ist zu beachten, dass du deine änderungen an den Waffen NACH der Zeile "GameServer()->m_pController->OnCharacterSpawn(this);" machst, sonst gibt er ihm die Waffen trotzdem.


      Zudem erlaubt dir diese funktion eine noch viel schönere Variante: du kannst z.B. einen eigenen Gametype erstellen, den du von der IGameController klasse ableitest und die Funktion OnCharacterSpawn mit einer eigenen ersetzt, ODER falls du noch nicht so viel erfahrung hast kannst du dies auch einfach in der CGameController::OnCharacterSpawn ändern z.B:

      Quellcode

      1. void IGameController::OnCharacterSpawn(class CCharacter *pChr)
      2. {
      3. // default health
      4. pChr->IncreaseHealth(10);
      5. pChr->GiveWeapon(WEAPON_HAMMER, -1); //gibt ihm den Hammer mit "unendlicher" Munition [-1] zeile auskommentieren, um zu verhindern, dass er den Hammer bekommt
      6. pChr->GiveWeapon(WEAPON_GUN, 10); //gibt ihm die Gun mit 10 Schuss auskommentieren, damit er keine Gun kriegt
      7. pChr->GiveWeapon(WEAPON_GRENADE, 10); //gibt ihm den granatwerfer mit 10 schuss
      8. pChr->GiveWeapon(WEAPON_GRENADE, -1); // gibt ihm den granatwerfer mit "unendlicher" munition
      9. }
      Alles anzeigen

      Gruß Pata

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Patafix ()