Как да изключа падащи гранати по земята при убиване на играч ?

Въпроси и проблеми свързани с AMXModX.
Аватар
Ground Zero SPL
Извън линия
Потребител
Потребител
Мнения: 26
Регистриран на: 07 Дек 2018, 21:42
Местоположение: Видин
Се отблагодари: 8 пъти
Получена благодарност: 1 път

Как да изключа падащи гранати по земята при убиване на играч ?

Мнение от Ground Zero SPL » 08 Дек 2018, 16:16

Здравейте!
Когато играч или бот бъде убит винаги пада по една граната. Долу става само гранати и това хич не ме устройва. Още през 2011 година в играта съм инсталирал amx mod x и csdm. Изключих ги и не е от тях. Нито плъгин съм инсталирал такъв. Правя си изводите, че е нещо в играта и затова пуснах темата в този раздел, а не в amx mod x раздела. Прочетох тази тема за нещо такова, обаче не ми стана ясно как да оправя това нещо. Темата е заключена и затова пиша тук.

Играта съм я теглил преди 8 години и не помня от къде... Заглавието на папката се казва "Counter-Strike 1.6 v37 New Era 2011" От всичките, които съм пробвал тя е единствената, която не ми крашва, която не е наконтена с разни скинове, която има ботове дори и в Half-Life. Единствения ми проблем е това с гранатите.

Та въпроса ми е: Кои файлове придизвикват това и има ли начин да се заместят с нормални такива от друго копие на игра ?
Другия вариант е: Да ми предложите читав CS 1.6, които има ботове, не крашва и няма кич от скинове.

С Windows 10 x64 съм
Поздрави! :)

Аватар
paintlesz
Извън линия
Потребител
Потребител
Мнения: 5
Регистриран на: 08 Дек 2018, 12:33

Как да изключа падащи гранати по земята при убиване на играч ?

Мнение от paintlesz » 08 Дек 2018, 18:35

mp_nadedrops 0

Код за потвърждение: Избери целия код

  #include <amxmodx>
  #include <engine>
  #include <fun>

  #define VOL_LOW 0.5 // volume used to play nade bouncing sound
  #define NADE_OFFSET 10 // distance (vaguely) between death origin and nade origin

  // DeathMSG
  public event_damage(id) {

    // if player is still alive or plugin is disabled
    if(get_user_health(id) > 0 || get_cvar_num("mp_nadedrops") < 1) {
      return PLUGIN_CONTINUE;
    }

    // if player had HE grenade
    if(hasweapon(id,"weapon_hegrenade") > 0) {
      new grenade = create_entity("info_target"); // create grenade entity
      entity_set_string(grenade,EV_SZ_classname,"fake_hegrenade"); // change name
      entity_set_int(grenade,EV_ENT_owner,id); // set owner
      entity_set_int(grenade,EV_INT_iuser1,0); // hasn't bounced yet

      // set grenade entity's size
      new Float:minbox[3] = { -2.5, -2.5, -2.5 }
      new Float:maxbox[3] = { 2.5, 2.5, 2.5 };
      entity_set_vector(grenade,EV_VEC_mins,minbox);
      entity_set_vector(grenade,EV_VEC_maxs,maxbox);

      // set grenade's overall being of a whole
      entity_set_int(grenade,EV_INT_solid,SOLID_TRIGGER);
      entity_set_int(grenade,EV_INT_movetype,MOVETYPE_TOSS);

      // set a random angle
      new Float:angles[3] = { 0.0, 0.0, 0.0 };
      angles[1] = float(random_num(0,180));
      entity_set_vector(grenade,EV_VEC_angles,angles);

      // get player's origin
      new Float:origin[3];
      entity_get_vector(id,EV_VEC_origin,origin);
      origin[0] += NADE_OFFSET; // offset

      // set model and origin
      entity_set_model(grenade,"models/w_hegrenade.mdl");
      entity_set_vector(grenade,EV_VEC_origin,origin);
    }

    // if player had smoke grenade
    if(hasweapon(id,"weapon_smokegrenade") > 0) {
      new grenade = create_entity("info_target"); // create grenade entity
      entity_set_string(grenade,EV_SZ_classname,"fake_smokegrenade"); // change name
      entity_set_int(grenade,EV_ENT_owner,id); // set owner
      entity_set_int(grenade,EV_INT_iuser1,0); // hasn't bounced yet

      // set grenade entity's size
      new Float:minbox[3] = { -2.5, -2.5, -2.5 }
      new Float:maxbox[3] = { 2.5, 2.5, 2.5 };
      entity_set_vector(grenade,EV_VEC_mins,minbox);
      entity_set_vector(grenade,EV_VEC_maxs,maxbox);

      // set grenade's overall being of a whole
      entity_set_int(grenade,EV_INT_solid,SOLID_TRIGGER);
      entity_set_int(grenade,EV_INT_movetype,MOVETYPE_TOSS);

      // set a random angle
      new Float:angles[3] = { 0.0, 0.0, 0.0 };
      angles[1] = float(random_num(0,180));
      entity_set_vector(grenade,EV_VEC_angles,angles);

      // get player's origin
      new Float:origin[3];
      entity_get_vector(id,EV_VEC_origin,origin);
      origin[0] -= NADE_OFFSET; // offset

      // set model and origin
      entity_set_model(grenade,"models/w_smokegrenade.mdl");
      entity_set_vector(grenade,EV_VEC_origin,origin);
    }

    // if player had at least one flashbang
    if(hasweapon(id,"weapon_flashbang") > 0) {
      new grenade = create_entity("info_target"); // create grenade entity
      entity_set_string(grenade,EV_SZ_classname,"fake_flashbang"); // change name
      entity_set_int(grenade,EV_ENT_owner,id); // set owner
      entity_set_int(grenade,EV_INT_iuser1,0); // hasn't bounced yet

      // set grenade entity's size
      new Float:minbox[3] = { -2.5, -2.5, -2.5 }
      new Float:maxbox[3] = { 2.5, 2.5, 2.5 };
      entity_set_vector(grenade,EV_VEC_mins,minbox);
      entity_set_vector(grenade,EV_VEC_maxs,maxbox);

      // set grenade's overall being of a whole
      entity_set_int(grenade,EV_INT_solid,SOLID_TRIGGER);
      entity_set_int(grenade,EV_INT_movetype,MOVETYPE_TOSS);

      // set a random angle
      new Float:angles[3] = { 0.0, 0.0, 0.0 };
      angles[1] = float(random_num(0,180));
      entity_set_vector(grenade,EV_VEC_angles,angles);

      // get player's origin
      new Float:origin[3];
      entity_get_vector(id,EV_VEC_origin,origin);
      origin[1] += NADE_OFFSET; // offset

      // set model and origin
      entity_set_model(grenade,"models/w_flashbang.mdl");
      entity_set_vector(grenade,EV_VEC_origin,origin);
    }

    // if player had two flashbangs, drop another
    if(hasweapon(id,"weapon_flashbang") > 1) {
      new grenade = create_entity("info_target"); // create grenade entity
      entity_set_string(grenade,EV_SZ_classname,"fake_flashbang"); // change name
      entity_set_int(grenade,EV_ENT_owner,id); // set owner
      entity_set_int(grenade,EV_INT_iuser1,0); // hasn't bounced yet

      // set grenade entity's size
      new Float:minbox[3] = { -2.5, -2.5, -2.5 }
      new Float:maxbox[3] = { 2.5, 2.5, 2.5 };
      entity_set_vector(grenade,EV_VEC_mins,minbox);
      entity_set_vector(grenade,EV_VEC_maxs,maxbox);

      // set grenade's overall being of a whole
      entity_set_int(grenade,EV_INT_solid,SOLID_TRIGGER);
      entity_set_int(grenade,EV_INT_movetype,MOVETYPE_TOSS);

      // set a random angle
      new Float:angles[3] = { 0.0, 0.0, 0.0 };
      angles[1] = float(random_num(0,180));
      entity_set_vector(grenade,EV_VEC_angles,angles);

      // get player's origin
      new Float:origin[3];
      entity_get_vector(id,EV_VEC_origin,origin);
      origin[1] -= NADE_OFFSET; // offset

      // set model and origin
      entity_set_model(grenade,"models/w_flashbang.mdl");
      entity_set_vector(grenade,EV_VEC_origin,origin);
    }

    return PLUGIN_CONTINUE;
  }

  // ResetHUD
  public event_resethud(id) {
    if(is_user_connected(id) == 1 && get_user_team(id) < 3) {
      set_task(0.5,"checkalive",id); // delay, because client is technically dead on ResetHUD
    }
  }

  // check if user is alive
  public checkalive(id) {
    if(is_user_alive(id) == 1) { // if so
      clear_nades(id); // clear nades (they just spawned)
    }
  }

  // entity touching
  public pfn_touch(ptr,ptd) {
    if(!is_valid_ent(ptd)) { // invalid toucher
      return PLUGIN_CONTINUE;
    }

    new classname[32];
    entity_get_string(ptd,EV_SZ_classname,classname,31); // get name of toucher

    new bounced = entity_get_int(ptd,EV_INT_iuser1); // bounced yet?

    // check if one of our fake grenades is colliding with world and mp_nadedropsounds is positive
    if((equal(classname,"fake_hegrenade") || equal(classname,"fake_flashbang") || equal(classname,"fake_smokegrenade")) && ptr == 0 && bounced == 0 && get_cvar_num("mp_nadedropsounds") > 0) {
      emit_sound(ptd,CHAN_ITEM,"weapons/he_bounce-1.wav",VOL_LOW,ATTN_NORM,0,PITCH_LOW); // play sound
      entity_set_int(ptd,EV_INT_iuser1,1); // has bounced
      return PLUGIN_CONTINUE;
    }

    // now check for more invalid entities or players
    if(!is_valid_ent(ptr) || !is_valid_ent(ptd) || !is_user_connected(ptd)) {
      return PLUGIN_CONTINUE;
    }

    entity_get_string(ptr,EV_SZ_classname,classname,31); // get name of touched

    // if player is touching hegrenade and doesn't have one
    if(equal(classname,"fake_hegrenade") && hasweapon(ptd,"weapon_hegrenade") == 0) {
      give_item(ptd,"weapon_hegrenade");
      remove_entity(ptr);
      return PLUGIN_CONTINUE;
    }

    // if player is touching smokegrenade and doesn't have one
    if(equal(classname,"fake_smokegrenade") && hasweapon(ptd,"weapon_smokegrenade") == 0) {
      give_item(ptd,"weapon_smokegrenade");
      remove_entity(ptr);
      return PLUGIN_CONTINUE;
    }

    // if player is touching flashbang and has room for another
    if(equal(classname,"fake_flashbang") && hasweapon(ptd,"weapon_flashbang") < 2) {
      give_item(ptd,"weapon_flashbang");
      remove_entity(ptr);
      return PLUGIN_CONTINUE;
    }

    return PLUGIN_CONTINUE;
  }

  // client disconnection
  public client_disconnect(id) {
    clear_nades(id);
  }

  // function to check if player has a specific weapon.
  // returns the amount of ammo for that weapon in backpack.
  // we use this so we can check for multiple flashbangs as well
  public hasweapon(id,weaponname[32]) {
    if(is_user_connected(id) == 0 || get_user_team(id) > 2) {
      return 0;
    }

    new weapons[32], num;
    get_user_weapons(id,weapons,num); // get weapons

    new foundweapon; // if we found the weapon yet (and if we did how much ammo for it)

    // loop through weapons
    for(new i=0;i<num;i++) {
      new checkweaponname[32];
      get_weaponname(weapons[i],checkweaponname,31);

      if(equal(weaponname,checkweaponname)) { // compare names
        new clip, ammo; // clip and ammo
        get_user_ammo(id,weapons[i],clip,ammo); // get clip and ammo
        foundweapon = ammo; // return amount in clip (for multiple FBs)
        break;
      }
    }

    return foundweapon;
  }

  // clear user's grenades
  public clear_nades(id) {
    new currnade;

    // go through fake HE grenades
    currnade = -1;
    while((currnade = find_ent_by_class(currnade,"fake_hegrenade")) > 0) {
      if(entity_get_int(currnade,EV_ENT_owner) == id) {
        remove_entity(currnade);
      }
    }

    // go through fake smoke grenades
    currnade = -1;
    while((currnade = find_ent_by_class(currnade,"fake_smokegrenade")) > 0) {
      if(entity_get_int(currnade,EV_ENT_owner) == id) {
        remove_entity(currnade);
      }
    }

    // go through fake flashbangs
    currnade = -1;
    while((currnade = find_ent_by_class(currnade,"fake_flashbang")) > 0) {
      if(entity_get_int(currnade,EV_ENT_owner) == id) {
        remove_entity(currnade);
      }
    }
  }

  // plugin precache
  public plugin_precache() {
    precache_model("models/w_hegrenade.mdl");
    precache_model("models/w_flashbang.mdl");
    precache_model("models/w_smokegrenade.mdl");
    precache_sound("weapons/he_bounce-1.wav");
  }

  // plugin initiation
  public plugin_init() {
    register_plugin("CSNadeDrops","0.14","Avalanche");
    console_print(0,"* CSNadeDrops 0.14 by Avalanche");

    register_event("Damage","event_damage","b","2!0"); // damage event
    register_event("ResetHUD","event_resethud","b"); // reset HUD event

    register_cvar("mp_nadedrops","1",FCVAR_PRINTABLEONLY); // cvar to disable/enable plugin
    register_cvar("mp_nadedropsounds","1",FCVAR_PRINTABLEONLY); // cvar to disable/enable nade drop sounds

    // get the mod's name
    new modname[32];
    get_modname(modname,31);

    // if this isn't Counter-Strike
    if(!equal(modname,"cstrike")) {
      pause("ae"); // lock the plugin
    }
  }

Аватар
Ground Zero SPL
Извън линия
Потребител
Потребител
Мнения: 26
Регистриран на: 07 Дек 2018, 21:42
Местоположение: Видин
Се отблагодари: 8 пъти
Получена благодарност: 1 път

Как да изключа падащи гранати по земята при убиване на играч ?

Мнение от Ground Zero SPL » 08 Дек 2018, 19:02

Благодаря, че се опитваш да помогнеш, но дай повече обяснение. Сега аз този код къде точно да го поставя и т.н.т... :)

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Как да изключа падащи гранати по земята при убиване на играч ?

Мнение от OciXCrom » 09 Дек 2018, 16:36

Не разбрах дали въпросът ти се отнася за сървър ползващ AMXX или за самата игра, без никакви добавки? Ако е първото, то темата ти е в грешен раздел (прочети описанието на раздела и текста в червеното квадратче най-отгоре). Ако е второто - няма как да ги изключиш.

Аватар
Ground Zero SPL
Извън линия
Потребител
Потребител
Мнения: 26
Регистриран на: 07 Дек 2018, 21:42
Местоположение: Видин
Се отблагодари: 8 пъти
Получена благодарност: 1 път

Как да изключа падащи гранати по земята при убиване на играч ?

Мнение от Ground Zero SPL » 09 Дек 2018, 17:18

Отнася се за самата игра, защото когато изключа AMXX мода със CSDM - цирка с гранатите си продължава.
Дали ще е сървър и хора да влизат в моя сървър, дали ще е с Singleplayer с ботове - резолтатът е един и същ с гранатите.

Щом няма начин да се изключи, може ли да се заместят файлове от друго копие на играта, където го няма това нещо с гранатите ? Влизам в доста сървъри и няма такова нещо... Би трябвало да има решение. Въпросът, че не знам от кои файлове зависи това. Другия вариант е, както споменах в първия ми пост - предложете ми нормално копие на играта, което и да не крашва - пък аз после ще си инсталирам csdm и така.... :)

ПС. Ако си купя оригинала - дали ще имам подобни проблеми ?

Аватар
Ground Zero SPL
Извън линия
Потребител
Потребител
Мнения: 26
Регистриран на: 07 Дек 2018, 21:42
Местоположение: Видин
Се отблагодари: 8 пъти
Получена благодарност: 1 път

Как да изключа падащи гранати по земята при убиване на играч ?

Мнение от Ground Zero SPL » 19 Яну 2019, 22:54

Здравейте отново и за много години!. Вече си реших проблема с гранатите по земята и смятам, че е редно да го споделя: Случайно попаднах на копие от замундата под името "Counter-Strike 1.6 SECTOR еdition (2018)" качен на 16.01.2019 г. Инсталирах Amx mod x и csdm и всичко е точно! Сега вече остава да си я понастроя и спокойно мога да си пусна сървърче и да съм спокоен, че няма да ме псуват хората заради само бомби по земята :D

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Как да изключа падащи гранати по земята при убиване на играч ?

Мнение от OciXCrom » 20 Яну 2019, 14:23

Значи все пак не се отнася за самата игра, а за АМХХ плъгин...

Аватар
Ground Zero SPL
Извън линия
Потребител
Потребител
Мнения: 26
Регистриран на: 07 Дек 2018, 21:42
Местоположение: Видин
Се отблагодари: 8 пъти
Получена благодарност: 1 път

Как да изключа падащи гранати по земята при убиване на играч ?

Мнение от Ground Zero SPL » 20 Яну 2019, 14:58

Не, за самата игра се е отнасяло. Още от началото го казах. Това го правеше без значение дали има Amxx Мод инсталирам или не. Просто с новото копие на играта всичко е точно.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта