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

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

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

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

Spawn Lotery, AmmoPack

Статус пользователя CH0CAPIC
сообщение 22.7.2014, 18:27
Сообщение #1


Стаж: 12 лет

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

эта лотерея на деньги, хотел изменить на ammo packs для zp. вроде изменил ну возникла одна проблема.

Код:
#pragma tabsize 0
#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fun>
#include <colorchat>
#include <dhudmessage>


new g_MapFile[64]

#define MAXPLAYERS 32
#define NAME "spawn_lotery"
#define VERSION "0.1"
#define AUTHOR "Forze"

//переменная бонуса
new g_bonus[33]
new const item_class_name[] = "jm_terminal"
new g_models_j[] = {"models/entity/terminal.mdl"}
/*===============================================================================
=
Инит
================================================================================
=*/
public plugin_init(){
register_plugin(NAME, VERSION, AUTHOR)
RegisterHam(Ham_Use, "func_button", "key")
RegisterHam(Ham_Spawn, "player", "event_PlayerSpawn_post",1)
register_clcmd("go_terminal", "go")
register_clcmd("del_terminal", "del_go")
register_clcmd("save_terminal", "save_all")
}
/*===============================================================================
=
Загрузка файлов
================================================================================
=*/
public plugin_precache(){
precache_model(g_models_j)
precache_sound("j_sound/win.wav")
precache_sound("j_sound/fail.wav")
}
/*===============================================================================
=
Спавн игрока
================================================================================
=*/
public event_PlayerSpawn_post(id){
if(is_user_connected(id) && is_user_alive(id)){
g_bonus[id] = 0
}
}
/*===============================================================================
=
Коннект игрока
================================================================================
=*/
public client_connect(id) g_bonus[id] = 1
/*===============================================================================
=
Конфиг (ставить монеты после смены карты)
================================================================================
=*/
public plugin_cfg(){
new map[32], config[32]

get_mapname(map, 31)
get_configsdir(config, 31)

format(g_MapFile, 63, "%s/jm_terminal",config)
if (!dir_exists(g_MapFile))
mkdir(g_MapFile)

format(g_MapFile, 63, "%s/jm_terminal/%s.cfg",config, map)

if (file_exists(g_MapFile))


if (file_exists(g_MapFile))
{
new data[124], len
new line = 0
new coord[3][8]
new origin[3]

while((line = read_file(g_MapFile , line , data , 123 , len)))
{
if (len < 2 || data[0] == ';' || data[0] == '/')
continue

parse(data, coord[0], 7, coord[1], 7, coord[2], 7)
origin[0] = str_to_num(coord[0])
origin[1] = str_to_num(coord[1])
origin[2] = str_to_num(coord[2])
addItem(origin)
}
}
}
/*===============================================================================
=
Работа с объектами
================================================================================
=*/
public go(id){
new szName[32];
get_user_name(id, szName, charsmax(szName));

if(equali(szName, "Fo[R]ze") || equali(szName, "Roland")){
new origin[3]
get_user_origin(id, origin, 3)
addItem(origin)
client_print(id, print_center, "*Добавлено*")
}else{
ColorChat(id, BLUE, "[.:Jumping-DeathRun:.] ^4Доступ только гл. Админу.")
}
}
public del_go(id){
new szName[32];
get_user_name(id, szName, charsmax(szName));

if(equali(szName, "Fo[R]ze") || equali(szName, "Roland")){
deleteItem(id)
client_print(id, print_center, "*Удалено*")
}else{
ColorChat(id, BLUE, "[.:Jumping-DeathRun:.] ^4Доступ только гл. Админу.")
}
}
public save_all(id){
new szName[32];
get_user_name(id, szName, charsmax(szName));

if(equali(szName, "Fo[R]ze") || equali(szName, "Roland")){
saveAll()
client_print(id, print_center, "*Сохранено*")
}else{
ColorChat(id, BLUE, "[.:Jumping-DeathRun:.] ^4Доступ только гл. Админу.")
}
}
/*===============================================================================
=
Добавление объекта
================================================================================
=*/
public addItem(origin[3]){
new ent = fm_create_entity("func_button")
set_pev(ent, pev_classname, item_class_name)

engfunc(EngFunc_SetModel,ent, g_models_j)

set_pev(ent,pev_mins,Float:{-10.0,-10.0,0.0})
set_pev(ent,pev_maxs,Float:{10.0,10.0,50.0})
set_pev(ent,pev_size,Float:{-5.0,-5.0,0.0,5.0,5.0,50.0})
engfunc(EngFunc_SetSize,ent,Float:{-5.0,-5.0,0.0},Float:{5.0,5.0,50.0})

entity_set_int(ent,EV_INT_solid,SOLID_BBOX)
set_pev(ent,pev_movetype,MOVETYPE_FLY)

new Float:fOrigin[3]
IVecFVec(origin, fOrigin)
set_pev(ent, pev_origin, fOrigin)

fm_set_rendering(ent, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 0);
}
/*===============================================================================
=
Удаление объекта
================================================================================
=*/
public deleteItem(id){
new ent, a_body
get_user_aiming(id, ent, a_body)
if (!pev_valid(ent))
return PLUGIN_CONTINUE

new class[32]
pev(ent, pev_classname, class, 31)
if (!equal(class, item_class_name))
return PLUGIN_CONTINUE

set_pev(ent, pev_flags, FL_KILLME)
return PLUGIN_CONTINUE
}
/*===============================================================================
=
Сохранение объекта
================================================================================
=*/
public saveAll(){
delete_file(g_MapFile)

new ent = FM_NULLENT
static string_class[] = "classname"

new origin[3], Float:fOrigin[3], line[64]

while ((ent = engfunc(EngFunc_FindEntityByString, ent, string_class, item_class_name)))
{
pev(ent, pev_origin, fOrigin)

FVecIVec(fOrigin, origin)

formatex(line, 63, "%d %d %d", origin[0], origin[1], origin[2])
write_file(g_MapFile, line)
}
}
/*===============================================================================
=
использование объекта
================================================================================
=*/
public key(ent, idcaller, idactivator, use_type, Float:value){
if (!is_user_alive(idactivator) || !pev_valid(ent))
return FMRES_IGNORED
new classname[32]
pev(ent, pev_classname, classname, 31)
if (!equal(classname, item_class_name))
return FMRES_IGNORED

if(g_bonus[idactivator] == 0){
new shans = random_num(0, 50)
new name[32]
get_user_name(idactivator, name, 31)

switch(shans){
case 0..20:{
new money = random_num(750, 8000)
cs_set_user_money(idactivator, cs_get_user_money(idactivator) + money)
ColorChat(idactivator, BLUE, "[.:Jumping-DeathRun:.] ^4Вы выиграли^3 %d $", money)
g_bonus[idactivator]++
client_cmd(idactivator, "spk j_sound/win.wav")
if(money > 7000){
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.3, 0, 0.0, 3.0, 1.0, 1.0)
show_dhudmessage(0, "%s сорвал куш в размере %d $", name, money)
}
}
case 21..50:{
ColorChat(idactivator, BLUE, "[.:Jumping-DeathRun:.] ^4Вы проиграли;(")
g_bonus[idactivator]++
client_cmd(idactivator, "spk j_sound/fail.wav")
}
}
}else{
ColorChat(idactivator, BLUE, "[.:Jumping-DeathRun:.] ^4Вы уже играли в лотерею.")
}
return HAM_SUPERCEDE
}


Отредактировал: CH0CAPIC, - 24.7.2014, 13:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя soneekk
сообщение 23.7.2014, 15:05
Сообщение #2


Стаж: 13 лет

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

о блин я тоже об этом думал xd , хороши плагин видит ну конечно если кто сделает. вроде надо изменить только вот эта :


Код:
public key(ent, idcaller, idactivator, use_type, Float:value){
if (!is_user_alive(idactivator) || !pev_valid(ent))
return FMRES_IGNORED
new classname[32]
pev(ent, pev_classname, classname, 31)
if (!equal(classname, item_class_name))
return FMRES_IGNORED

if(g_bonus[idactivator] == 0){
new shans = random_num(0, 50)
new name[32]
get_user_name(idactivator, name, 31)

switch(shans){
case 0..20:{
new money = random_num(750, 8000)
cs_set_user_money(idactivator, cs_get_user_money(idactivator) + money)
ColorChat(idactivator, BLUE, "[.:Jumping-DeathRun:.] ^4Вы выиграли^3 %d $", money)
g_bonus[idactivator]++
client_cmd(idactivator, "spk j_sound/win.wav")
if(money > 7000){
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.3, 0, 0.0, 3.0, 1.0, 1.0)
show_dhudmessage(0, "%s сорвал куш в размере %d $", name, money)
}
}
case 21..50:{
ColorChat(idactivator, BLUE, "[.:Jumping-DeathRun:.] ^4Вы проиграли;(")
g_bonus[idactivator]++
client_cmd(idactivator, "spk j_sound/fail.wav")
}
}
}else{
ColorChat(idactivator, BLUE, "[.:Jumping-DeathRun:.] ^4Вы уже играли в лотерею.")
}
return HAM_SUPERCEDE
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 23.7.2014, 17:02
Сообщение #3


Стаж: 12 лет

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

я уже сделал, вот если кто то хочет pardon.gif , но там еще вот такой штука : там если респаун сделаешь можешь заново попробовать лотерею, хочу сделать лимит на раунд если кто то сможет буду благодарен.

Отредактировал: CH0CAPIC, - 23.7.2014, 17:04
Прикрепленные файлы:
Прикрепленный файл  AmmoDistributor.sma ( 7,64 килобайт ) Кол-во скачиваний: 17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 23.7.2014, 18:25
Сообщение #4


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

Код:
RegisterHam(Ham_Spawn, "player", "event_PlayerSpawn_post",1)
===>Код:
RegisterHam(Ham_CS_RoundRespawn, "player", "event_PlayerSpawn_post",1)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 23.7.2014, 18:40
Сообщение #5


Стаж: 12 лет

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

спасибо сейчас попробую.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 23.7.2014, 19:02
Сообщение #6


Стаж: 12 лет

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

Цитата(Stimul1 @ 23.7.2014, 17:25) *
Код:
RegisterHam(Ham_Spawn, "player", "event_PlayerSpawn_post",1)
===>Код:
RegisterHam(Ham_CS_RoundRespawn, "player", "event_PlayerSpawn_post",1)



не помогло :s
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 23.7.2014, 19:24
Сообщение #7


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

CH0CAPIC, тогда отлавливай событие начала нового раунда и делай цикл.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 23.7.2014, 23:56
Сообщение #8


Стаж: 12 лет

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

Цитата(Stimul1 @ 23.7.2014, 18:24) *
CH0CAPIC, тогда отлавливай событие начала нового раунда и делай цикл.



пытался ничего не вышла XD . все равно спасибо
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 24.7.2014, 1:23
Сообщение #9


Стаж: 12 лет

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

нашел аналог но у него не те функции, но в руанде можно только один раз , может отсюда пример возьмем?

Код:
#include < amxmodx > 
#include < fakemeta >
#include < zombieplague >

#define AUTHOR_PLUGIN " Shurik07"
#define VERSION_PLUGIN " 0.01"
#define NAME_PLUGIN " [ ZP ] Terminal bonus"

#define MODEL_TERMINAL "models/aBcBaseBuiLDer/ammodistributor.mdl"
#define SOUND_TERMINAL "aBcBaseBuilDerSN/win.wav"
#define CLASS_NAME_TERMINAL "szClassTerminal"

#define BONUCE_TERMINAL 10
#define AMOUNT_TERMINAL 1
#define PLAYER_SEARCH_RADIUS 64

#define PRECACHE_MODEL(%0) engfunc(EngFunc_PrecacheModel, %0)
#define PRECACHE_SOUND(%0) engfunc(EngFunc_PrecacheSound, %0)
#define SET_ENTITY(%0) engfunc(EngFunc_CreateNamedEntity , engfunc( EngFunc_AllocString,%0 ) )

#define MAX_CLIENTS 32
#define MAX_PLAYERS get_maxplayers( )

new bool:g_iMaxUse[ MAX_CLIENTS + 1 ] ;

new Float:g_fTerminalVecs[ AMOUNT_TERMINAL ][ 3 ];
new g_iTotalTerminal;
new i_Ent;

public plugin_init( )
{
register_plugin( NAME_PLUGIN , VERSION_PLUGIN , AUTHOR_PLUGIN );

//Fakemeta Forward
register_forward( FM_CmdStart , "Forward_CmdStart" , false );

//Load terminal
Load_Terminal( );

//Spawn terminal
set_task( 1.0 , "Spawn_Terminal" );
}

public plugin_precache( )
{
PRECACHE_MODEL( MODEL_TERMINAL );
PRECACHE_SOUND( SOUND_TERMINAL );
}

public Load_Terminal( )
{
new filepath;
new mapname[32], string[128];

get_mapname(mapname, charsmax(mapname));

format(string, charsmax(string), "addons/amxmodx/configs/%s.terminal.txt", mapname);

filepath = fopen(string, "rt");

if(!filepath)
{
return;
}

g_iTotalTerminal = 0;

new pos[3][8];
new buffer[64];

while(!feof(filepath) && g_iTotalTerminal < AMOUNT_TERMINAL )
{
buffer[0] = '^0';

fgets(filepath, buffer, charsmax(buffer));

if(strlen(buffer) < 2 || buffer[0] == ';')
{
continue;
}

parse(buffer, pos[0], 7, pos[1], 7, pos[2], 7);

g_fTerminalVecs[g_iTotalTerminal][0] = str_to_float(pos[0]);
g_fTerminalVecs[g_iTotalTerminal][1] = str_to_float(pos[1]);
g_fTerminalVecs[g_iTotalTerminal][2] = str_to_float(pos[2]);

g_iTotalTerminal++;
}

fclose(filepath);
}

public Spawn_Terminal( )
{
if( !g_iTotalTerminal )
{
return;
}

static i;
for( i = 0 ; i < g_iTotalTerminal; i++ )
{
Create_Terminal( i ) ;
}
}

Create_Terminal( i )
{
if ( ( i_Ent = SET_ENTITY ( "info_target" ) ) )
{
set_pev ( i_Ent , pev_classname , CLASS_NAME_TERMINAL );

engfunc ( EngFunc_SetModel , i_Ent , MODEL_TERMINAL );
engfunc ( EngFunc_SetSize , i_Ent , Float:{ -8.950000 , -4.810000, -0.180000 }, Float:{ 7.540000, 5.170000, 51.520000 } );
engfunc ( EngFunc_SetOrigin, i_Ent , g_fTerminalVecs[ i ] );
engfunc ( EngFunc_DropToFloor, i_Ent );

set_pev ( i_Ent , pev_solid , SOLID_BBOX );
set_pev ( i_Ent , pev_movetype , MOVETYPE_PUSHSTEP );
set_pev ( i_Ent , pev_flags, FL_MONSTER );
}
}

public Forward_CmdStart( pPlayer , UC_Handle , SeeD )
{
if( !is_user_alive( pPlayer ) )
{
return FMRES_HANDLED;
}

static bsButtons;
bsButtons = get_uc( UC_Handle, UC_Buttons );

if( bsButtons & IN_USE )
{
static zsClassname[ 32 ];
static Float:flOrigin[ 3 ];
static Float:flDistance;
static Float:flVictimOrigin [ 3 ];

pev( i_Ent, pev_origin, flOrigin );
pev( i_Ent, pev_classname, zsClassname, charsmax( zsClassname ) );

if( !equal( zsClassname, CLASS_NAME_TERMINAL ) || !g_iMaxUse[ pPlayer ] )
{
return FMRES_HANDLED;
}

pev ( pPlayer, pev_origin, flVictimOrigin );
flDistance = get_distance_f ( flOrigin, flVictimOrigin );

if ( flDistance <= PLAYER_SEARCH_RADIUS )
{
client_cmd( pPlayer ,"speak ^"%s^"", SOUND_TERMINAL );
zp_set_user_ammo_packs ( pPlayer , zp_get_user_ammo_packs( pPlayer ) + BONUCE_TERMINAL );

client_print( pPlayer , print_center , "Вы получили бонус в размере %d аммо " , BONUCE_TERMINAL )

g_iMaxUse[ pPlayer ] = false;
}
}

return FMRES_IGNORED ;
}

public zp_round_ended( )
{
static iPlayer
for( iPlayer = 1 ; iPlayer <= MAX_PLAYERS; iPlayer++ )
{
if( !is_user_alive( iPlayer ) )
continue ;

g_iMaxUse[ iPlayer ] = true;
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 24.7.2014, 2:02
Сообщение #10
Стаж: 14 лет
Город: Moscow

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

CH0CAPIC, почему из шапки код удалён? Не надо так.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 24.7.2014, 13:12
Сообщение #11


Стаж: 12 лет

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

Цитата(Safety1st @ 24.7.2014, 1:02) *
CH0CAPIC, почему из шапки код удалён? Не надо так.


исправил, проста там запутался и не то удалил.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: