Перейти к содержимому


Фотография

Единая тема поиска плагинов L4D2

плагин

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3677

#701 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 02 Июль 2017 - 15:59

Добрый вечер..Слушайте есть ли уроки по языку sourcepawn.

Понимаю что пишу не по теме.

Но хочу научиться писать даже самые простые плагины.

Я находил всякие уроки типо http://hlmod.ru/thre...-chast-1.36876/

Я прочитал всю 1 часть ,но всёравно не понял.

 

Комментарий,синтаксис,переменные,операторы,массивы.Зачем ,куда и как ,что это вообще такое?

 

Есть ли подробная статья по поводу этого языка и желательно на русском.

Заранее Спасибо.



#702 Kakoin

Kakoin

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 8 969 сообщений

Отправлено 02 Июль 2017 - 16:04

Добрый вечер..Слушайте есть ли уроки по языку sourcepawn.

Понимаю что пишу не по теме.

Но хочу научиться писать даже самые простые плагины.

Я находил всякие уроки типо http://hlmod.ru/thre...-chast-1.36876/

Я прочитал всю 1 часть ,но всёравно не понял.

 

Комментарий,синтаксис,переменные,операторы,массивы.Зачем ,куда и как ,что это вообще такое?

 

Есть ли подробная статья по поводу этого языка и желательно на русском.

Заранее Спасибо.

Вряд ли есть уроки лучше этих. Автор постарался расписать все от  а до я.


Сообщение отредактировал Kakoin: 02 Июль 2017 - 16:05

  • Game Over - L4D2 - CS:GO это нравится

#703 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 02 Июль 2017 - 17:35

На этом форуме ты не найдешь помощи в данном направлении. И да я поддерживаю человека что написал выше RIKO расписал все подробно на русском языке. И уроков там много, и постоянно обновляется.

 

P.S Зарегистрируйся еще тут https://forums.allie...isplay.php?f=52 на форуме воспользуйся на крайняк транслитом там много полезной инфы будет.

 

 

Вряд ли есть уроки лучше этих. Автор постарался расписать все от  а до я.

Спасибо



#704 Fearkin

Fearkin

    Пользователь

  • Пользователь
  • PipPipPip
  • 169 сообщений

Отправлено 02 Июль 2017 - 17:38

Добрый вечер..Слушайте есть ли уроки по языку sourcepawn.

Понимаю что пишу не по теме.

Но хочу научиться писать даже самые простые плагины.

Я находил всякие уроки типо http://hlmod.ru/thre...-chast-1.36876/

Я прочитал всю 1 часть ,но всёравно не понял.

 

Комментарий,синтаксис,переменные,операторы,массивы.Зачем ,куда и как ,что это вообще такое?

 

Есть ли подробная статья по поводу этого языка и желательно на русском.

Заранее Спасибо.

 

Рекомендую открывать готовые плагины и гуглить различные "public action" и "Hook Event (события)", затем вносить небольшие изменения. Подстраивай под себя и на практике начнешь разбираться какая функция за что отвечает.

Например ты хочешь сделать плагин, который что-то делает при появлении танка, значит ищешь любой официальный плагин с танками, ищешь там событие "Hook event(tank_spawn, Event_название события)" и дальше в коде смотришь "public Action: Event_название события" (это значит, когда танк появился, будем делать следущее..)


Сообщение отредактировал Fearkin: 02 Июль 2017 - 17:45

  • Slaven555 и BHaType это нравится

#705 dr_lex

dr_lex

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 053 сообщений

Отправлено 02 Июль 2017 - 18:19

Добрый вечер..Слушайте есть ли уроки по языку sourcepawn.

Понимаю что пишу не по теме.

Но хочу научиться писать даже самые простые плагины.

Я находил всякие уроки типо http://hlmod.ru/thre...-chast-1.36876/

Я прочитал всю 1 часть ,но всёравно не понял.

 

Комментарий,синтаксис,переменные,операторы,массивы.Зачем ,куда и как ,что это вообще такое?

 

Есть ли подробная статья по поводу этого языка и желательно на русском.

Заранее Спасибо.

Я сам самоучка, изучал коды плагинов и смотрел темы уроков и статей. Последнее время есть много знакомых в steam которые помогают, когда есть вопросы. Но сейчас в основном пишу сам и обновляю на новый синтекс тоже сам. последнее время начал увлекаться базами mysql и sqlite

Простым игрокам не понять, почему гл.админы не играют, и редко заходят. А в это время гл.админы работают над сервером (пишут, обновляют и исправляют на сервере разные вещи).


Сообщение отредактировал dr_lex: 02 Июль 2017 - 18:20

  • Slaven555 и BHaType это нравится

#706 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 03 Июль 2017 - 15:59

Рекомендую открывать готовые плагины и гуглить различные "public action" и "Hook Event (события)", затем вносить небольшие изменения. Подстраивай под себя и на практике начнешь разбираться какая функция за что отвечает.

Например ты хочешь сделать плагин, который что-то делает при появлении танка, значит ищешь любой официальный плагин с танками, ищешь там событие "Hook event(tank_spawn, Event_название события)" и дальше в коде смотришь "public Action: Event_название события" (это значит, когда танк появился, будем делать следущее..)

 

Но где мне найти все события именно для игры l4d2?



#707 Kakoin

Kakoin

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 8 969 сообщений

Отправлено 03 Июль 2017 - 16:05

Но где мне найти все события именно для игры l4d2?

https://wiki.alliedm...4_dead_2_events


  • BHaType это нравится

#708 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 03 Июль 2017 - 16:15

Спасибо..Но как повысить максимальное  хп выжившим ,чтоб не 100хп ,а 200 макс. 



#709 Kakoin

Kakoin

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 8 969 сообщений

Отправлено 03 Июль 2017 - 16:16

Спасибо..Но как повысить максимальное  хп выжившим ,чтоб не 100хп ,а 200 макс. 

http://forum.myarena...im/?hl=выжившим



#710 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 03 Июль 2017 - 17:04

Извините ток сегодня понял немного про sourcepawn читал про события и как их делать.Но несовсем понимаю как это прописать. Вот что получилось

 

 

#include <sourcemod>
 
public void OnPluginStart()
{
HookEvent("player_first_spawn", Event_SetEntProp(client,Prop_Data,"m_iHealth", 200 ),EventHookMode_Pre);
}
 
public void Event_SetEntProp(client,Prop_Data,"m_iHealth", 200(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
int iUserID = hEvent.GetInt("userid");
PrintToServer("userid: %i",iUserID);
}
В итоге 4 ошибки ,1 предупреждение
 
Может кто поможет с этим пожалуйста.

Сообщение отредактировал BHaType: 03 Июль 2017 - 17:09


#711 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 03 Июль 2017 - 17:14

Если честно я не понял что это. Это выдрано откуда то.. Много чего не хватает. Что именно вот этот кусочек вы хотели скомпилировать?

Я хотел чтобы при спавне выживших у них было не стандартное кол-во здоровья.



#712 Kakoin

Kakoin

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 8 969 сообщений

Отправлено 03 Июль 2017 - 17:16

Извините ток сегодня понял немного про sourcepawn читал про события и как их делать.Но несовсем понимаю как это прописать. Вот что получилось
 
 
#include <sourcemod>
 
public void OnPluginStart()
{
HookEvent("player_first_spawn", Event_SetEntProp(client,Prop_Data,"m_iHealth", 200 ),EventHookMode_Pre);
}
 
public void Event_SetEntProp(client,Prop_Data,"m_iHealth", 200(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
int iUserID = hEvent.GetInt("userid");
PrintToServer("userid: %i",iUserID);
}
В итоге 4 ошибки ,1 предупреждение
 
Может кто поможет с этим пожалуйста.

Что это за монстр?  :blink:
 

public void OnPluginStart()
{
  HookEvent("player_spawn",   Player_Spawn);
}

public void Player_Spawn(Handle hEvent, char[] sEvName, bool bDontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(hEvent, "userid"));
	
	if(IsValidClient(client) && GetClientTeam(client) == 2)
	{
		SetEntProp(client,Prop_Data,"m_iHealth", 200);
	}
}

stock bool IsValidClient(int client)
{
	return (1 <= client <= MaxClients && IsClientInGame(client) && !IsFakeClient(client)) ? true : false;
}


#713 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 03 Июль 2017 - 17:21

 

Что это за монстр?  :blink:
 

public void OnPluginStart()
{
  HookEvent("player_spawn",   Player_Spawn);
}

public void Player_Spawn(Handle hEvent, char[] sEvName, bool bDontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(hEvent, "userid"));
	
	if(IsValidClient(client) && GetClientTeam(client) == 2)
	{
		SetEntProp(client,Prop_Data,"m_iHealth", 200);
	}
}

stock bool IsValidClient(int client)
{
	return (1 <= client <= MaxClients && IsClientInGame(client) && !IsFakeClient(client)) ? true : false;
}

1

 

Собственно есть готовый плагин с 200 ХП вам выставлено компилируется без ошибок.

2

 

 

 

Чем 1 отличается от 2 ?Если то и то делает 200 хп.Но 1 вариант в 19 строк ,а 2 в 39. 


Сообщение отредактировал BHaType: 03 Июль 2017 - 17:26


#714 Kakoin

Kakoin

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 8 969 сообщений

Отправлено 03 Июль 2017 - 17:27

Чем 1 отличается от 2 ?Если то и то делает 200 хп.Но 1 вариант в 19 строк ,а 2 в 39. 

Во 2 варианте есть таймер + можно выдать армор + там выдает через SetEntData

 

А так особо нечем.


  • BHaType это нравится

#715 AlexMy

AlexMy

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 032 сообщений

Отправлено 04 Июль 2017 - 9:20

В основном есть три варианта которых я знаю, давать здоровье:

Первый вариант с помощью чита:

int flagsgive = GetCommandFlags("give");
SetCommandFlags("give", flagsgive & ~FCVAR_CHEAT);
FakeClientCommand(i, "give health");
SetCommandFlags("give", flagsgive);
	

и второй и третий вариант они похожи между собой:

SetEntityHealth(client, 100);

и 

SetEntData(client, FindDataMapOffs(client, "m_iHealth"), 100, 4, true);

самый такой нормальный это второй вариант.

А давать здоровье можно при разных условиях, я вот например обновляю игрокам здоровье когда появился на карте танк.



#716 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 04 Июль 2017 - 10:38

В основном есть три варианта которых я знаю, давать здоровье:

Первый вариант с помощью чита:

int flagsgive = GetCommandFlags("give");
SetCommandFlags("give", flagsgive & ~FCVAR_CHEAT);
FakeClientCommand(i, "give health");
SetCommandFlags("give", flagsgive);
	

и второй и третий вариант они похожи между собой:

SetEntityHealth(client, 100);

и 

SetEntData(client, FindDataMapOffs(client, "m_iHealth"), 100, 4, true);

самый такой нормальный это второй вариант.

А давать здоровье можно при разных условиях, я вот например обновляю игрокам здоровье когда появился на карте танк.

Ок,но почему 2 самый нормальный? Функция одинаковая же.



#717 AlexMy

AlexMy

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 032 сообщений

Отправлено 04 Июль 2017 - 11:26

Ок,но почему 2 самый нормальный? Функция одинаковая же.

Проще в эксплуатации и короче. 


 

Извините ток сегодня понял немного про sourcepawn читал про события и как их делать.Но несовсем понимаю как это прописать. Вот что получилось

 

 

#include <sourcemod>
 
public void OnPluginStart()
{
HookEvent("player_first_spawn", Event_SetEntProp(client,Prop_Data,"m_iHealth", 200 ),EventHookMode_Pre);
}
 
public void Event_SetEntProp(client,Prop_Data,"m_iHealth", 200(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
int iUserID = hEvent.GetInt("userid");
PrintToServer("userid: %i",iUserID);
}
В итоге 4 ошибки ,1 предупреждение
 
Может кто поможет с этим пожалуйста.

 

Вот ещё пример:

#include <sourcemod> //подключаемся к библиотеке sourcemod'a
#pragma newdecls required // сообщаем компилятору что плагин написан на новом синтаксисе

public void OnPluginStart() // запускаем плагин
{
	//EventHookMode_Pre - хукать событие перед
    //EventHookMode_Post - хукать событие после
    //EventHookMode - хукать настоящие событие.
    //EventHookMode_PostNoCopy - хукать после того, но без переменных
	
	HookEvent("round_start", EventRoundStart, EventHookMode_PostNoCopy); //Ловим событие и передаем на натив EventRoundStart
}
public void EventRoundStart(Event event, const char[] name, bool dontBroadcast) //передали на натив
{
	for (int i = 1; i <= MaxClients; ++i) if (IsClientInGame(i) && GetClientTeam(i) == 2) // пробигаемся циклом по всем игрокам и по пути даем здоровье
	{
		SetEntityHealth(i, 110);
		break; //ломаем цикл, ну тут хз нужен он или нет...
	}
}
/** GetClientTeam(i) == ?) делится на три команды:*/
/*  GetClientTeam(i) == 1) спектор
    GetClientTeam(i) == 2) выжившие
    GetClientTeam(i) == 3) зараженные
*/

  • BHaType это нравится

#718 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 04 Июль 2017 - 12:16

 

Проще в эксплуатации и короче. 


Вот ещё пример:

#include <sourcemod> //подключаемся к библиотеке sourcemod'a
#pragma newdecls required // сообщаем компилятору что плагин написан на новом синтаксисе

public void OnPluginStart() // запускаем плагин
{
	//EventHookMode_Pre - хукать событие перед
    //EventHookMode_Post - хукать событие после
    //EventHookMode - хукать настоящие событие.
    //EventHookMode_PostNoCopy - хукать после того, но без переменных
	
	HookEvent("round_start", EventRoundStart, EventHookMode_PostNoCopy); //Ловим событие и передаем на натив EventRoundStart
}
public void EventRoundStart(Event event, const char[] name, bool dontBroadcast) //передали на натив
{
	for (int i = 1; i <= MaxClients; ++i) if (IsClientInGame(i) && GetClientTeam(i) == 2) // пробигаемся циклом по всем игрокам и по пути даем здоровье
	{
		SetEntityHealth(i, 110);
		break; //ломаем цикл, ну тут хз нужен он или нет...
	}
}
/** GetClientTeam(i) == ?) делится на три команды:*/
/*  GetClientTeam(i) == 1) спектор
    GetClientTeam(i) == 2) выжившие
    GetClientTeam(i) == 3) зараженные
*/

Спасибо за подробную информацию.Но с чего вы начинаете писать плагины? Вы сначала думайте что написать ,как написать? Или в процессе написания придумывайте?

 

Лично я не пишу плагины ,не совсем понимаю что писать.

 

 

#include <sourcemod>
 
public void OnPluginStart()
{
HookEvent("player_first_spawn", Event_SetEntProp(client,Prop_Data,"m_iHealth", 200 ),EventHookMode_Pre);
}
 
public void Event_SetEntProp(client,Prop_Data,"m_iHealth", 200(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
int iUserID = hEvent.GetInt("userid");
PrintToServer("userid: %i",iUserID);
}

 

 

Это я старался написать плагин на увеличение стандартных ХП выжившим . Писал по статье  R1KO http://hlmod.ru/thre...erzhanie.36893/

Но делал по этим примерам http://hlmod.ru/thre...a-events.36891/

 

 

AlexMy Я вообще понятия не имею ,как такое надо прописывать for (int i = 1; i <= MaxClients; ++i) if (IsClientInGame(i) && GetClientTeam(i) == 2) .

 

В статье R1KO такого я не видел.Может быть это из-за того что его статья совершенно про другую игру CS:S 

Вот я смотрел все события в игре left 4 dead 2 ,но такого я точно не видел.

 

 

И ещё вопрос по переменным. Зачем они нужны в sourcpawn? Как я понял переменные содержат все бе информацию ,но специально скачивал исходники плагинов и искал эти переменные ,чтобы понять зачем они нужны ,не одну переменную я не нашёл.



#719 AlexMy

AlexMy

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 032 сообщений

Отправлено 04 Июль 2017 - 13:29

AlexMy Я вообще понятия не имею ,как такое надо прописывать for (int i = 1; i <= MaxClients; ++i) if (IsClientInGame(i) && GetClientTeam(i) == 2) .

Про какой ты цикл говоришь for или while?

Что на hlmod'e что и у меня одно и тоже только чуток по разному написано

 

И ещё вопрос по переменным. Зачем они нужны в sourcpawn? Как я понял переменные содержат все бе информацию ,но специально скачивал исходники плагинов и искал эти переменные ,чтобы понять зачем они нужны ,не одну переменную я не нашёл.

какие переменные, имеешь виду? Можно много переменных с глобальных int сделать.


Сообщение отредактировал AlexMy: 04 Июль 2017 - 13:29


#720 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 04 Июль 2017 - 15:29

Про какой ты цикл говоришь for или while?

Что на hlmod'e что и у меня одно и тоже только чуток по разному написано

 

какие переменные, имеешь виду? Можно много переменных с глобальных int сделать.

for и white 

 

int ,float,char,bool,handle  локальные.





Темы с аналогичным тегами плагин

Количество пользователей, читающих эту тему: 3

0 пользователей, 1 гостей, 0 анонимных


    Bing (1), Google (1)