Русское сообщество по скриптингу

respawn.amxx

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

respawn.amxx

Сообщение AdmiinChick » 17 мар 2010, 21:45

Приветствую!
Ребята, проблема с этим плагином. Падают из-за него серваки... :(
Код: Выделить всё
L 03/17/2010 - 20:00:51: [AMXX] Displaying debug trace (plugin "respawn.amxx")
L 03/17/2010 - 20:00:51: [AMXX] Run time error 10: native error (native "give_item")
L 03/17/2010 - 20:00:51: [AMXX]    [0] 240.attach::player_giveitems (line 105)

L 03/17/2010 - 19:17:06: [AMXX] Displaying debug trace (plugin "respawn.amxx")
L 03/17/2010 - 19:17:06: [AMXX] Run time error 10: native error (native "spawn")
L 03/17/2010 - 19:17:06: [AMXX]    [0] 240.attach::player_spawn (line 144)


Сам в структуре плагина нуб-нубом. Может Вы своим проф. взглядом посмотреть и исправить эту байду? Буду просто мега-супер благодарен! Ну просто очень достали падения серверов... :(

Код: Выделить всё
/* AMXX Mod script.
*
* (c) Copyright 2004, developed by Geesu modified by v3x
* This file is provided as is (no warranties).
*
* Changelog
* 1.0:
*   Pistols are now given to players when they respawn
*   sv_checkpistols cvar added, if this is set to 0, then players will always spawn with a pistol, otherwise they will only spawn with a pistol when it is not scoutzknivez and not a ka map
*   sv_respawn cvar added, set this to 0 to disable the plugin
*/

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

#define DISABLE_CS 0

// team ids
#define UNASSIGNED 0
#define TS 1
#define CTS 2
#define AUTO_TEAM 5

#define CVAR_CT_TIME   "sv_respawn_time_ct"
#define CVAR_TE_TIME   "sv_respawn_time_te"
#define CVAR_GOD_TIME   "sv_respawn_god_time"

new bool:g_PistolsDisabled = false

public plugin_init(){

   register_plugin("Respawn Forever","1.2","Pimp Daddy (OoTOAoO)/v3x")

   register_event("DeathMsg","on_Death","a")
   
   register_cvar("sv_checkpistols", "1")
   register_cvar("sv_respawn", "1")
   register_cvar(CVAR_CT_TIME, "3")
   register_cvar(CVAR_TE_TIME, "3")
   register_cvar(CVAR_GOD_TIME, "2");

   register_clcmd("say /respawn", "ClCmd_Respawn");
   
   //set_task(15.0, "remove_guns", 1982123);
   set_task(45.0, "check_dead", 12937);
}

/*public remove_guns()
{
   if ( !get_cvar_num("sv_respawn") )
      return PLUGIN_CONTINUE

   new ent;
   while((ent = find_ent_by_class(ent, "weaponbox")) != 0)
   {
      new model[33];
      entity_get_string(ent, EV_SZ_model, model, 32);
      if(containi(model, "w_") != -1)
         remove_entity(ent);
   }
   set_task(15.0, "remove_guns", 1982123);

   return PLUGIN_CONTINUE;
}*/

// * Credited to twisted
public pfn_touch(ptr, ptd)
{
   if(get_cvar_num("sv_respawn") && is_valid_ent(ptr))
   {
      new classname[32]
      if(is_valid_ent(ptr))
         entity_get_string(ptr,EV_SZ_classname,classname,31)
      if(equali(classname,"weaponbox"))
      {      
         for(new inum=0;inum<=get_global_int(GL_maxEntities);inum++)
         {
            if(!is_valid_ent(inum)) continue
            new class[51]
            entity_get_string(inum,EV_SZ_classname,class,50)
            if(containi(class,"weapon_") == -1) continue
            new owner = entity_get_edict(inum,EV_ENT_owner)
            if(ptr == owner)
               remove_entity(inum)
         }
         remove_entity(ptr)
      }
      else if(containi(classname,"weapon_") != -1)
         remove_entity(ptr)
   }
   return PLUGIN_CONTINUE
}

public check_dead()
{
   new players[32], num, id;
   get_players(players, num, "b");

   for(id = 0; id <= num; id++)
      client_print(id, print_chat, "*** Что бы вступить в игру, напишите в чате /respawn");

   set_task(45.0, "check_dead", 12937);
}

public ClCmd_Respawn( id )
{
   new CsTeams:iTeam = cs_get_user_team(id);
   
   if((iTeam == CS_TEAM_CT || iTeam == CS_TEAM_T) && !is_user_alive(id))
   {
      new parm[1];
      parm[0] = id;

      switch(iTeam)
      {
         case CS_TEAM_CT:
         {
            set_task(get_cvar_float(CVAR_CT_TIME) + 0.5,"player_spawn",72,parm,1)
            set_task(get_cvar_float(CVAR_CT_TIME) + 0.7,"player_spawn",72,parm,1)

            set_task(get_cvar_float(CVAR_CT_TIME) + 0.9,"player_giveitems",72,parm,1)
         }
         case CS_TEAM_T:
         {
            set_task(get_cvar_float(CVAR_TE_TIME) + 0.5,"player_spawn",72,parm,1)
            set_task(get_cvar_float(CVAR_TE_TIME) + 0.7,"player_spawn",72,parm,1)

            set_task(get_cvar_float(CVAR_TE_TIME) + 0.9,"player_giveitems",72,parm,1)
         }
      }
   }
   return PLUGIN_CONTINUE;
}

public check_pistols()
{
   
   /* Determine if we should give players a pistol or not */
   if ( get_cvar_num("sv_checkpistols") )
   {
      set_task(1.0, "check_pistols")
      new mapname[32]
      get_mapname(mapname,31)
      if ( containi(mapname,"ka_")!=-1 || containi(mapname,"scoutzknivez")!=-1 )
            g_PistolsDisabled = true
   }
}

public on_Death()
{
   if ( !get_cvar_num("sv_respawn") )
      return PLUGIN_CONTINUE
   
   new victim_id = read_data(2)

   new parm[1]
   parm[0]=victim_id
   
   /* Spawn the player twice to avoid the HL engine bug */

   switch(get_user_team(victim_id))
   {
      case CTS:
      {
         set_task(get_cvar_float(CVAR_CT_TIME) + 0.5,"player_spawn",72,parm,1)
         set_task(get_cvar_float(CVAR_CT_TIME) + 0.7,"player_spawn",72,parm,1)

         set_task(get_cvar_float(CVAR_CT_TIME) + 0.9,"player_giveitems",72,parm,1)
      }
      case TS:
      {
         set_task(get_cvar_float(CVAR_TE_TIME) + 0.5,"player_spawn",72,parm,1)
         set_task(get_cvar_float(CVAR_TE_TIME) + 0.7,"player_spawn",72,parm,1)

         set_task(get_cvar_float(CVAR_TE_TIME) + 0.9,"player_giveitems",72,parm,1)
      }
   }

   return PLUGIN_CONTINUE
}

public player_giveitems(parm[1])
{
   new id = parm[0]

   give_item(id, "item_suit")
   give_item(id, "weapon_knife")

   /* Determines if a players should be given a pistol */
   if ( !g_PistolsDisabled )
   {
      new wpnList[32] = 0, number = 0, bool:foundGlock = false, bool:foundUSP = false
      get_user_weapons(id,wpnList,number)
      
      /* Determine if the player already has a pistol */
      for (new i = 0;i < number;i++)
      {
         if (wpnList[i] == CSW_GLOCK18)
            foundGlock = true
         if (wpnList[i] == CSW_USP)
            foundUSP = true
      }
      
      /* Give a T his/her pistol */
      if ( get_user_team(id)==TS && !foundGlock )
      {
            give_item(id,"weapon_glock18")
            give_item(id,"ammo_9mm")
            give_item(id,"ammo_9mm")
      }
      /* Give a CT his/her pistol */
      else if ( get_user_team(id)==CTS && !foundUSP )
      {
            give_item(id,"weapon_usp")
            give_item(id,"ammo_45acp")
            give_item(id,"ammo_45acp")
      }
   }

   return PLUGIN_CONTINUE
}

public player_spawn(parm[1])
{
   spawn(parm[0])

   if (get_cvar_num(CVAR_GOD_TIME) > 0)
   {
      set_user_godmode(parm[0], 1)
      set_task(get_cvar_float(CVAR_GOD_TIME), "no_god", 724, parm, 1)
   
      set_user_rendering(parm[0],kRenderFxGlowShell,0,225,0,kRenderNormal,25)
   }
}

public no_god(parm[1])
{
   if (get_cvar_num(CVAR_GOD_TIME) > 0)
   {
      set_user_godmode(parm[0], 0)
      set_user_rendering(parm[0],kRenderFxNone,255,255,255,kRenderNormal,255)
   }
}


Наверное вкурсе все, что это за плагин и т.д. Но на всякий случай:
Плагин респит игрока сразу на базу после смерти. Так же игрок появляется с пистолетом и ножом. Появление без либо каких задержек и пауз.
Квары в игре:
/respawn - в любом моменте игры. (Кстати, даже когда ты в спектах :()
Квары в server.cfg или amxx.cfg:
Нету...

Спасибо заранее! :)

p.s. буду так же благодарен, если найдется аналог этого плагина...
А тут детальная статистика и мониторинг Ваших серверов warmodcs.ru
Аватара пользователя
AdmiinChick
 
Сообщения: 15
Зарегистрирован: 14 янв 2010, 17:44
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.

Re: respawn.amxx

Сообщение AdmiinChick » 22 мар 2010, 17:38

Ser_UFL - да, по словам "loose indentation" я это понял. Но я пробовал двигать и туда, и туда, выходит еще хуже, т.е. еще больше ошибок...
А тут детальная статистика и мониторинг Ваших серверов warmodcs.ru
Аватара пользователя
AdmiinChick
 
Сообщения: 15
Зарегистрирован: 14 янв 2010, 17:44
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.

Re: respawn.amxx

Сообщение Ser_UFL » 22 мар 2010, 17:42

Исходник прикрепи во вложении...
Запомните, всегда по жизни вас будут красить вежливость и спокойствие, а не наезды и дешевые понты ;)
Аватара пользователя
Ser_UFL
 
Сообщения: 975
Зарегистрирован: 22 авг 2009, 19:30
Откуда: Hell
Благодарил (а): 276 раз.
Поблагодарили: 380 раз.
Языки программирования: Counter-Strike 1.6:
WebMod-scripts, little Pawn.

Re: respawn.amxx

Сообщение AdmiinChick » 22 мар 2010, 18:21

Вот .sma -
respawn.sma

Вот .amxx -
respawn.amxx
А тут детальная статистика и мониторинг Ваших серверов warmodcs.ru
Аватара пользователя
AdmiinChick
 
Сообщения: 15
Зарегистрирован: 14 янв 2010, 17:44
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.

Re: respawn.amxx

Сообщение DJ_WEST » 22 мар 2010, 19:47

Посмотрел на ту строку, которая ему не нравится - и закрыл, ибо вообще не могу понять, что ему не нравится

Плагин будет работать и с loose indentation. Если не понимаешь, как исправить, можешь добавить в плагин:
[pawn]#pragma tabsize 0 [/pawn]
И ошибки не будет.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: respawn.amxx

Сообщение Ser_UFL » 22 мар 2010, 19:47

Держи
Запомните, всегда по жизни вас будут красить вежливость и спокойствие, а не наезды и дешевые понты ;)
Аватара пользователя
Ser_UFL
 
Сообщения: 975
Зарегистрирован: 22 авг 2009, 19:30
Откуда: Hell
Благодарил (а): 276 раз.
Поблагодарили: 380 раз.
Языки программирования: Counter-Strike 1.6:
WebMod-scripts, little Pawn.

Re: respawn.amxx

Сообщение AdmiinChick » 23 мар 2010, 00:17

Ребята, Вы мне очень помогли! Спасибо Вам огромное! ;)
Как и обещал - высылаю исходник amx_bancs.sma в личку :)

p.s. не нашел Вашей кнопки, тыкните носом плз...
Аватара пользователя
AdmiinChick
 
Сообщения: 15
Зарегистрирован: 14 янв 2010, 17:44
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.

Re: respawn.amxx

Сообщение Fedcomp » 23 мар 2010, 07:14

AdmiinChick писал(а):Как и обещал - высылаю исходник amx_bancs.sma в личку :)

Кому он нужен? :ROFL: :ROFL:
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: respawn.amxx

Сообщение a.aqua » 23 мар 2010, 13:07

Скриптерам. P@LYB@S.
Они не знают как забанить по кс .)
a.aqua
 
Сообщения: 369
Зарегистрирован: 08 сен 2009, 16:43
Благодарил (а): 146 раз.
Поблагодарили: 138 раз.
Языки программирования: Counter-Strike 1.6

Пред.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 12