Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

13 страниц V  « 5 6 7 ... 11 12 »

[Бесплатно] Скриптинг

Статус пользователя proff_q
сообщение 29.1.2014, 8:39
Сообщение #101
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

poolday,
Код:
#include <amxmodx>
#include <hamsandwich>
#include <fun>

public plugin_init() {
RegisterHam(Ham_Spawn, "player", "player_respawn", 1);
}
public player_respawn(id){
if(is_user_alive(id))
give_item(id, "item_assaultsuit")
}


Отредактировал: proff_q, - 29.1.2014, 12:43
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 29.1.2014, 9:13
Сообщение #102
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

иногда будет выбивать ошибку если нет проверки

Код:
 public plugin_init() RegisterHam( Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1 )
public fwHamPlayerSpawnPost(id) if(is_user_alive(id)) give_item(id, "item_assaultsuit")


Отредактировал: csnet, - 29.1.2014, 9:15


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 29.1.2014, 11:19
Сообщение #103
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Цитата(csnet @ 29.1.2014, 9:13) *
иногда будет выбивать ошибку если нет проверки

Код:
 public plugin_init() RegisterHam( Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1 )
public fwHamPlayerSpawnPost(id) if(is_user_alive(id)) give_item(id, "item_assaultsuit")

Мы же вызываем функцию в момент спавна игрока, логично же, что он будет живым =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя fitamin4ik
сообщение 29.1.2014, 12:25
Сообщение #104
Стаж: 15 лет

Сообщений: 344
Благодарностей: 88
Полезность: < 0

Помогите пожалуйста разобраться.
В общем такая беда есть система уровней, при убийстве должно выдавать +1 EXP, но не выдается, как исправить?
Код:

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <nvault>
#include <colorstatus.inc>

#define PLUGIN "Level System"
#define VERSION "2.1"
#define AUTHOR "heka" // fixed by Good_Hash

// Version 2.1b :
// Added:
// zp_level_save_by 1/0 - Save by STEAM_ID ( 0 ) ::: Save by NICK ( 1 )
// default : 1.


new const Level_Exp[4] = {50, 100, 300, 400}
new const g_TRank[4][] =
{
"a", "b", "c", "d"
};

new const g_CTRank[4][] =
{
"a", "b", "c", "d"
};
new g_level[33]
new g_exp[33]
new g_vault, g_save_type

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
g_vault = nvault_open("jb_level_system")
g_save_type = register_cvar("level_save_by", "0")
register_forward(FM_PlayerPreThink, "OnPlayerPreThink")
register_forward(FM_Sys_Error, "fw_ServerDown");
register_forward(FM_GameShutdown, "fw_ServerDown");
register_forward(FM_ServerDeactivate, "fw_ServerDown");

initColorStatus();
}

public plugin_natives()
{
register_native("get_user_level", "native_get_user_level", 1)
register_native("set_user_level", "native_set_user_level", 1)

register_native("get_user_exp", "native_get_user_exp", 1)
register_native("set_user_exp", "native_set_user_exp", 1)
}

public client_connect(id)
{
if ( is_user_bot(id) )
return

g_level[id] = 0

LoadData(id)
}

public client_disconnect(id)
{
SaveData(id)

g_exp[id] = 0
g_level[id] = 0
}

public fw_ServerDown()
{
new MaxPlayers = get_maxplayers();
for(new i = 0; i <= MaxPlayers; i++)
{
if(is_user_connected(i))
SaveData(i)
}
}

public plugin_end()
{
nvault_close(g_vault)
}

public SaveData(id)
{
new AuthID[35]
if ( get_pcvar_num(g_save_type) )
{
get_user_name(id, AuthID, 32)
replace_all(AuthID, 255, "#", "[r]")
}
else
get_user_authid(id,AuthID,34)

new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s",AuthID)
format(vaultdata,255,"%i#%i#",g_exp[id],g_level[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public LoadData(id)
{
new AuthID[35]
if ( get_pcvar_num(g_save_type) )
{
get_user_name(id, AuthID, 32)
replace_all(AuthID, 255, "#", "[r]")
}
else
get_user_authid(id,AuthID,34)

new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s",AuthID)
format(vaultdata,255,"%i#%i#",g_exp[id],g_level[id])
nvault_get(g_vault,vaultkey,vaultdata,255)

replace_all(vaultdata, 255, "#", " ")

new playerxp[32], playerlevel[32]

parse(vaultdata, playerxp, 31, playerlevel, 31)

g_exp[id] = str_to_num(playerxp)
g_level[id] = str_to_num(playerlevel)

return PLUGIN_CONTINUE
}

public fw_PlayerKilled(victim, attacker)
{
if(!is_user_alive(victim))
return;

if(attacker == victim || !attacker)
return;

new MAX_LVL = sizeof Level_Exp - 1;

if(g_exp[attacker] < Level_Exp[g_level[attacker]] && g_level[attacker] < MAX_LVL)
{
g_exp[attacker]+= 1
}
check_level(attacker)
}

public check_level(id)
{
new MAX_LVL = sizeof Level_Exp - 1;

if (g_exp[id] > Level_Exp[MAX_LVL] - 1 )
return PLUGIN_HANDLED;

if( g_exp[id] == Level_Exp[ g_level[id]])
{
if ( g_level[id] < MAX_LVL ) g_level[id]++
g_exp[id] = 0
}
while (g_exp[id] >= Level_Exp[g_level[id]])
{
g_level[id]++
if (cs_get_user_team(id) == CS_TEAM_T)
{
ChatColor(id, "!g[Jail]!yТы повысил свой авторитет, теперь ты !g%s", g_TRank[g_level[id]])
}
else if (cs_get_user_team(id) == CS_TEAM_CT)
{
ChatColor(id, "!g[Jail]!yТы повысил свой авторитет, теперь ты !g%s", g_CTRank[g_level[id]])
}
}
return PLUGIN_HANDLED;
}

public OnPlayerPreThink(id)
{
if(is_user_alive(id))
{
if (cs_get_user_team(id) == CS_TEAM_T)
{
makeStatusText(id,YELLOW_STATUS,0.0,"[Звание: %s] [Опыт: %d / %d]", g_TRank[g_level[id]], g_exp[id], Level_Exp[g_level[id]]);
}
else if (cs_get_user_team(id) == CS_TEAM_CT)
{
makeStatusText(id,YELLOW_STATUS,0.0,"[Звание: %s] [Опыт: %d / %d]", g_CTRank[g_level[id]], g_exp[id], Level_Exp[g_level[id]]);
}
}
}

public native_get_user_exp(id)
{
return g_exp[id];
}

public native_set_user_exp(id, amount)
{
g_exp[id] = amount;
}

public native_get_user_level(id)
{
return g_level[id];
}

public native_set_user_level(id, amount)
{
g_level[id] = amount;
}

stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!r", "^3")
replace_all(msg, 190, "!b", "^0")

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), {0,0,0}, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 29.1.2014, 12:30
Сообщение #105


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

fitamin4ik,все должно выдавать.
Вот место, где выдает експу

Код:
public fw_PlayerKilled(victim, attacker)
{
if(!is_user_alive(victim))
return;

if(attacker == victim || !attacker)
return;

new MAX_LVL = sizeof Level_Exp - 1;

if(g_exp[attacker] < Level_Exp[g_level[attacker]] && g_level[attacker] < MAX_LVL)
{
g_exp[attacker]+= 1
}
check_level(attacker)
}


g_exp[attacker]+= 1 есть, значит должно прибавлять


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 29.1.2014, 12:33
Сообщение #106
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

Цитата(proff_q @ 29.1.2014, 13:19) *
Мы же вызываем функцию в момент спавна игрока, логично же, что он будет живым =)



как ни странно нет ;) я тоже так подумал сначала, а потом когда посыпались еррор логи с этой функции, добавил проверку и они пропали


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя fitamin4ik
сообщение 29.1.2014, 13:00
Сообщение #107
Стаж: 15 лет

Сообщений: 344
Благодарностей: 88
Полезность: < 0

Цитата(vovan4ik1997 @ 29.1.2014, 12:30) *
fitamin4ik,все должно выдавать.
Вот место, где выдает експу

Код:
public fw_PlayerKilled(victim, attacker)
{
if(!is_user_alive(victim))
return;

if(attacker == victim || !attacker)
return;

new MAX_LVL = sizeof Level_Exp - 1;

if(g_exp[attacker] < Level_Exp[g_level[attacker]] && g_level[attacker] < MAX_LVL)
{
g_exp[attacker]+= 1
}
check_level(attacker)
}


g_exp[attacker]+= 1 есть, значит должно прибавлять

кэп, я знаю, может быть условие не правильное

Код:
if(g_exp[attacker] < Level_Exp[g_level[attacker]] && g_level[attacker] < MAX_LVL)


Отредактировал: fitamin4ik, - 29.1.2014, 13:00
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 29.1.2014, 13:10
Сообщение #108
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(proff_q @ 29.1.2014, 13:19) *
Мы же вызываем функцию в момент спавна игрока, логично же, что он будет живым =)

Ноу)
Этот форвард вызывается и при входе игрока на сервер, когда он ещё не живой.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 29.1.2014, 13:16
Сообщение #109
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(fitamin4ik @ 29.1.2014, 15:00) *
кэп, я знаю, может быть условие не правильное

Неправильное условие:
Код
if(!is_user_alive(victim))   return;
Оно не нужно, в fw_PlayerKilled это всегда true.

Это лучше тоже изменить:
Код
if(attacker == victim || !attacker || attacker > giMaxPlayers )
где giMaxPlayers = get_maxplayers() в plugin_init.

Сам плагин ужасен((
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
asus5343
сообщение 29.1.2014, 13:32
Сообщение #110
Стаж: 12 лет

Сообщений: 209
Благодарностей: 34
Полезность: 0

Здравствуй , напиши пожалуйста плагин vipmenu суть плагина
Команда в консоль vipmenu
В самой менюшке чтоб было
1.Ак-47
2.М4а1
3.AWP
4.FAMAS
Так же чтоб давалось в каждом раунде dgl бронижелет гранаты все кроме дыма у кт щипцы.
Оружия такие как ак мка фамас после второго раунда,а авп после 5 раунда.
И чтоб в чате это показывало игроку .
И еще сделай чтоб в чат выводилась рекламу
[VIP]Возможность VIP статуса /vip.
[VIP]Покупка VIP через Skype:
Если можно в лс. плагин-)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 29.1.2014, 14:52
Сообщение #111
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

таких в паблике полно


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя fitamin4ik
сообщение 29.1.2014, 15:00
Сообщение #112
Стаж: 15 лет

Сообщений: 344
Благодарностей: 88
Полезность: < 0

Цитата(Safety1st @ 29.1.2014, 13:16) *
Неправильное условие:
Код
if(!is_user_alive(victim))   return;
Оно не нужно, в fw_PlayerKilled это всегда true.

Это лучше тоже изменить:
Код
if(attacker == victim || !attacker || attacker > giMaxPlayers )
где giMaxPlayers = get_maxplayers() в plugin_init.

Сам плагин ужасен((


вот так сделать?
Код:
public fw_PlayerKilled(victim, attacker)
{
new MAX_LVL = sizeof Level_Exp - 1;
if(attacker == victim || !attacker || attacker > giMaxPlayers )
if(g_exp[attacker] < Level_Exp[g_level[attacker]] && g_level[attacker] < MAX_LVL)
{
g_exp[attacker]+= 1
}
check_level(attacker)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя stefkone
сообщение 29.1.2014, 21:45
Сообщение #113


Иконка группы

Стаж: 19 лет

Сообщений: 1711
Благодарностей: 1130
Полезность: 1068

Цитата(stefkone @ 28.1.2014, 0:58) *
Исправь пожалуйста функцию "Motion sensor" и "Trip laser", а именно проверка на себя самого. Подробнее ниже!
Что сейчас происходит - игрок бросает гранату с одной из функций что я указал выше, оно отлично работает, но она так же срабатывает на себя самого - если ты её касаешься, то она активируется
Весь код в сообщение никак не хочет влезать, закину файлом!
[attachment=23005:nademodes.rar]

up
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя poolday
сообщение 29.1.2014, 23:17
Сообщение #114


Стаж: 13 лет

Сообщений: 292
Благодарностей: 297
Полезность: 658

Цитата(proff_q @ 29.1.2014, 9:39) *
poolday,
Код:
#include <amxmodx>
#include <hamsandwich>
#include <fun>

public plugin_init() {
RegisterHam(Ham_Spawn, "player", "player_respawn", 1);
}
public player_respawn(id){
if(is_user_alive(id))
give_item(id, "item_assaultsuit")
}

Игрокам выдается 100 армы , как можно настроить что бы меньше было !?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 29.1.2014, 23:39
Сообщение #115
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Цитата(poolday @ 30.1.2014, 0:17) *
Игрокам выдается 100 армы , как можно настроить что бы меньше было !?

вероятно так:

Код:
#include <amxmodx>
#include <hamsandwich>
#include <fun>

public plugin_init() {
RegisterHam(Ham_Spawn, "player", "player_respawn", 1);
}
public player_respawn(id){
if(is_user_alive(id))
give_item(id, "item_assaultsuit, 50")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 30.1.2014, 0:24
Сообщение #116
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(exec1337 @ 30.1.2014, 1:39) *
вероятно так

rofl.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
exec1337
сообщение 30.1.2014, 1:01
Сообщение #117
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Цитата(Safety1st @ 30.1.2014, 1:24) *
rofl.gif

Код:
#include <amxmodx>
#include <hamsandwich>
#include <fun>

public plugin_init() {
RegisterHam(Ham_Spawn, "player", "player_respawn", 1);
}

new ar = give_item(id, "item_assaultsuit");

public player_respawn(id){
if(is_user_alive(id))
cs_set_weapon_ammo(ar, 50);
}


а так?)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 30.1.2014, 1:23
Сообщение #118
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Так смешнее! ;)

Вообще, оптимальнее всего выдавать броню нативой cs_set_user_armor.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 30.1.2014, 6:17
Сообщение #119
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

если брони нет то да, если есть то надо получить armortype

Код:
enum CsArmorType {
CS_ARMOR_NONE = 0, // no armor
CS_ARMOR_KEVLAR = 1, // armor
CS_ARMOR_VESTHELM = 2 // armor and helmet
};


Отредактировал: csnet, - 30.1.2014, 6:56


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 30.1.2014, 7:02
Сообщение #120
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Код:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>

public plugin_init() {
register_plugin("GIVE ARMOR", "1.0", "Esecman")
RegisterHam(Ham_Spawn, "player", "player_respawn", 1);
}

public player_respawn(id){
if(is_user_alive(id))
cs_set_user_armor(id,77,CS_ARMOR_VESTHELM)
}


З.Ы. **** 77 *** количество брони
З.Ы.2. Армор с каской :D

Отредактировал: Esecman, - 30.1.2014, 7:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
13 страниц V  « 5 6 7 ... 11 12 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: