Witam. Mam problem. Otóż chcę dodać prezent dla najlepszego gracza rozgrzewki. Osoba, która będzie miała najwięcej fragów na rr otrzyma w pierwszej rundzie po rozgrzewce dodatkowe 200$, czyli łącznie będzie miała ich 1000. I tutaj pojawia się problem, jakiego eventu użyć, by gracz otrzymał dodatkowe pieniądze w tylko i wyłącznie w pierwszej rundzie po rr? Rozgrzewka trwa minutę, jest reset i gra zaczyna się od nowa.
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Pierwsza runda po rr
#2
Napisano 30.01.2014 15:11
I tutaj pojawia się problem, jakiego eventu
event nowej rundy. pod koniec rozgrzewki daj boolean'a z tym żeby dać i zapisz do zmiennej id gracza który wygrał. w funkcji odpowiadającej za nowa rundę sprawdz czy bolean jest na TAK , i dodaj graczowi hajs jednocześnie ustawiając takiego booleana na false;
#3
Napisano 30.01.2014 16:19
Jak dodam do rozgrzewki taki kod, to zadziała to dawanie kasy? Chodzi mi o to, żeby ono było tylko i wyłącznie w pierwszej rundzie i żeby otrzymał je najlepszy gracz rozgrzewki.
public client_connect(id) { prezent[id] = false; }
public Koniec()
{
new players[32], num
get_players(players, num)
new rank[1]
for(new i = 0; i < num; i++)
{
new id = players[i]
prezent[id] = false
if(frags[id] > rank[0])
{
rank[0] = id
}
frags[i] = 0
}
prezent[rank[0]] = true;
}
/* Naliczanie */
public Death()
{
new iKiller = read_data(1)
new iVictim = read_data(2)
new a = get_user_team(iKiller)
new b = get_user_team(iVictim)
new c = is_user_connected(iKiller)
new d = is_user_connected(iVictim)
if(a != b && c && d)
{
frags[iKiller]++
}
}
/* Prezent */
public New_Round()
{
{
gRound++;
}
if(is_user_alive(id) && prezent[id])
{
cs_set_user_money(id,cs_get_user_money(id) + 200)
}
if( gRound >= 2)
{
prezent[id]=false;
}
#4
Napisano 30.01.2014 17:34
na pierwszy rzut oka już widzę że nie gdyż New_Round() nie ma parametru ID do którego chcesz się odwołać.
Reszta wydaje się być "ok" choć zamiast tworzyć tablicę dla każdego lepiej zrobić coś takiego.
Pseudo kod :
zmienne :
new bool:daj_hajs = false; new najlepszy_gracz = 0;
gdy rozgrzewka się skończy sprawdzaj kto ma najwięcej fragów (tak jak to zrobiłeś powinno styknąć) id gracza zapisuj w najlepszy_gracz i ustaw daj_hajs na true.
w evencie nowej rundy sprawdzaj czy daj_hajs jest true , jak tak ,
cs_set_user_money(najlepszy_gracz,cs_get_user_money(najlepszy_gracz)+200); daj_hajs = false;
powinno styknąć. wiele nie pomogę gdyż dawno nie bawiłęm się w tym + nie mam kodu Twojej rozgrzewki.
Powodzenia! ![]()
#5
Napisano 30.01.2014 20:39
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <StripWeapons>
#define PLUGIN "Rozgrzewka"
#define VERSION "1.0"
#define AUTHOR "Jenot"
#define MAX 32
#define SPAWN_TASKID 9999
#define TASK_EQUIP 99999
#define RESTART_TASKID 123
#define ACTIVE_TASKID 124
enum PluginSounds {
psJeden,
psDwa,
psTrzy,
psMuzyka
};
stock const gPluginSounds[ PluginSounds ][ 128 ] = {
"sound/rozgrzewka/jeden.wav",
"sound/rozgrzewka/dwa.wav",
"sound/rozgrzewka/trzy.wav",
"sound/rozgrzewka/muzyka.mp3"
}
stock const gPluginPause[ ][ ] = {
"imessage.amxx",
"redbull.amxx",
"scrollmsg.amxx",
"vip.amxx",
"RoundSound.amxx",
"ultimate_sounds.amxx"
}
new bool:Active = false;
new bool:gbPlay[ MAX + 1 ];
new bool:daj_hajs = false;
new frags[33];
new gPcvar[ 3 ];
public plugin_init( ) {
register_plugin( PLUGIN, VERSION, AUTHOR )
register_event("TextMsg", "Game_Restart", "a", "2&#Game_C");
register_event("DeathMsg","onDeath","a");
register_event("CurWeapon","eventCurWeapon","be","1=0", "2!0");
register_event("HLTV", "New_Round", "a", "1=0", "2=0");
RegisterHam(Ham_Spawn, "player", "fwSpawn",1);
gPcvar[ 0 ] = register_cvar( "rozgrzewka_czas", "95" );
gPcvar[ 1 ] = register_cvar( "rozgrzewka_odrodzenie", "2.0" );
gPcvar[ 2 ] = get_cvar_pointer( "mp_freezetime" );
blockBuy( );
}
public plugin_precache( ) {
for( new i = 0; i < sizeof( gPluginSounds ); i++) {
precache_generic( gPluginSounds[ PluginSounds: i ] );
}
}
public Game_Restart( ) {
if( Active ) {
remove_task( RESTART_TASKID );
return;
}
Active = true;
new iRTime = get_pcvar_num( gPcvar[ 0 ] )+ get_pcvar_num( gPcvar[ 2 ] ) + 1;
for( new i = 1; i < MAX + 1; i++ ) {
gbPlay[ i ] = true;
}
new param[ 1 ];
param[ 0 ]= iRTime;
set_task( 1.0, "CountDown", RESTART_TASKID, param, 1);
for(new i = 0; i < sizeof gPluginPause; i++) {
pause( "ac", gPluginPause[ i ] );
}
}
public CountDown( param[ 1 ] ) {
new iNow = param[ 0 ]--;
switch( iNow ) {
case 0:{
server_cmd("sv_restartround 1");
clearRespawns();
new param[ 1 ];
param[ 0 ] = 0;
set_task(1.0, "Activation", ACTIVE_TASKID, param, 1);
for(new i = 0; i < sizeof gPluginPause; i++) {
unpause( "ac", gPluginPause[ i ] );
}
}
case 1: play( 0, gPluginSounds[ psJeden ] );
case 2: play( 0, gPluginSounds[ psDwa ] );
case 3: play( 0, gPluginSounds[ psTrzy ] );
}
if( iNow >= 1) {
set_task( 1.0, "CountDown", RESTART_TASKID, param, 1);
}
new fx = 0;
if( iNow <= 5) {
fx=1;
}
set_hudmessage( random_num( 0, 255 ), random_num( 0, 255 ), random_num( 0, 255 ), 0.65, 0.75, fx, 6.0, 1.0 )
show_hudmessage(0, "Czas rozgrzewki^n%2d:%02d",iNow/60,iNow%60);
}
public Activation( param[ 1 ] ) {
Active = ( param[ 0 ] == 0 )?false:true;
}
public onDeath( ) {
new vid = read_data( 2 );
if( Active ) {
set_task( get_pcvar_float(gPcvar[ 1 ]), "respawn", SPAWN_TASKID + vid);
}
return PLUGIN_CONTINUE;
}
public fwSpawn( id ) {
if( Active && is_user_alive( id ) ) {
if( gbPlay[ id ] ) {
play( id, gPluginSounds[ psMuzyka ] );
gbPlay[ id ] = false;
}
if(task_exists(TASK_EQUIP +id ) ) {
remove_task( TASK_EQUIP + id );
}
set_task(0.2, "taskEquip", TASK_EQUIP + id);
}
}
public eventCurWeapon( id ) {
if( Active ) {
if( task_exists( TASK_EQUIP + id ) ) {
remove_task( TASK_EQUIP + id );
}
set_task(0.5, "taskEquip", TASK_EQUIP + id);
}
}
public taskEquip( id ) {
id -= TASK_EQUIP;
if( Active && is_user_alive( id ) ) {
StripWeapons(id, Primary);
StripWeapons(id, Secondary);
StripWeapons(id, Grenades);
StripWeapons(id, C4);
}
}
public respawn( task_id ) {
ExecuteHamB( Ham_CS_RoundRespawn, task_id - SPAWN_TASKID );
}
public clearRespawns(){
for( new i = 1; i <= MAX; i++) {
if( task_exists( SPAWN_TASKID + i ) ) {
remove_task(SPAWN_TASKID+i);
}
if( task_exists( TASK_EQUIP + i ) ) {
remove_task( TASK_EQUIP + i );
}
}
}
/* Blokada */
public blockBuy( ) {
register_clcmd( "drop", "block" )
register_clcmd( "cl_setautobuy", "block" )
register_clcmd( "cl_autobuy", "block" )
register_clcmd( "cl_setrebuy", "block" )
register_clcmd( "cl_rebuy", "block" )
register_clcmd( "buy", "block" )
register_clcmd( "p228", "block" );
register_clcmd( "228compact", "block" );
register_clcmd( "shield", "block" );
register_clcmd( "scout", "block" );
register_clcmd( "hegren", "block" );
register_clcmd( "xm1014", "block" );
register_clcmd( "autoshotgun", "block" );
register_clcmd( "mac10", "block" );
register_clcmd( "aug", "block" );
register_clcmd( "bullpup", "block" );
register_clcmd( "sgren", "block" );
register_clcmd( "elites", "block" );
register_clcmd( "fn57", "block" );
register_clcmd( "fiveseven", "block" );
register_clcmd( "ump45", "block" );
register_clcmd( "sg550", "block" );
register_clcmd( "krieg550", "block" );
register_clcmd( "galil", "block" );
register_clcmd( "defender", "block" );
register_clcmd( "famas", "block" );
register_clcmd( "clarion", "block" );
register_clcmd( "usp", "block" );
register_clcmd( "km45", "block" );
register_clcmd( "glock", "block" );
register_clcmd( "9x19mm", "block" );
register_clcmd( "awp", "block" );
register_clcmd( "magnum", "block" );
register_clcmd( "mp5", "block" );
register_clcmd( "smg", "block" );
register_clcmd( "m249", "block" );
register_clcmd( "m3", "block" );
register_clcmd( "12gauge", "block" );
register_clcmd( "m4a1", "block" );
register_clcmd( "tmp", "block" );
register_clcmd( "mp", "block" );
register_clcmd( "g3sg1", "block" );
register_clcmd( "d3au1", "block" );
register_clcmd( "flash", "block" );
register_clcmd( "deagle", "block" );
register_clcmd( "nighthawk", "block" );
register_clcmd( "sg552", "block" );
register_clcmd( "krieg552", "block" );
register_clcmd( "ak47", "block" );
register_clcmd( "cv47", "block" );
register_clcmd( "p90", "block" );
register_clcmd( "c90", "block" );
register_clcmd( "primammo", "block" );
register_clcmd( "secammo", "block" );
register_clcmd( "vest", "block" );
register_clcmd( "vesthelm", "block" );
register_clcmd( "nvgs", "block" );
}
public block( id ) {
if( Active ) {
client_print( id, print_center, "Nie tym razem" );
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
/* Odtwarzanie */
play( id, const sound[ ] )
{
new end = strlen( sound ) - 4;
if( containi(sound, ".mp3" ) == end && end > 0 )
client_cmd( id, "mp3 play %s", sound);
else if( containi(sound,".wav") == end && end > 0)
client_cmd(id, "spk %s", sound);
else
client_cmd(id, "speak %s",sound);
}
public client_connect(id) { daj_hajs[id] = false; }
public Koniec()
{
new najlepszy_gracz = 0;
get_players(najlepszy_gracz, num)
new rank[1]
for(new i = 0; i < num; i++)
{
new id = najlepszy_gracz[i]
daj_hajs[id] = false
if(frags[id] > rank[0])
{
rank[0] = id
}
frags[i] = 0
}
daj_hajs[rank[0]] = true;
}
/* Naliczanie */
public Death()
{
new iKiller = read_data(1)
new iVictim = read_data(2)
new a = get_user_team(iKiller)
new b = get_user_team(iVictim)
new c = is_user_connected(iKiller)
new d = is_user_connected(iVictim)
if(a != b && c && d)
{
frags[iKiller]++
}
}
/* Prezent */
public New_Round(id)
{
new gRound = 0;
{
gRound++;
}
get_user_name(najlepszy_gracz, name, 34);
client_print(najlepszy_gracz, print_chat,"Najlepszym graczem rozgrzewki zostal %s i otrzymal 200$",name);
if(is_user_connected(najlepszy_gracz)
{
if(is_user_alive(id) && daj_hajs[id])
{
cs_set_user_money(najlepszy_gracz,cs_get_user_money(najlepszy_gracz)+200);
daj_hajs = false;
}
}
if( gRound >= 2)
{
daj_hajs[id]=false;
}
Tak będzie dobrze?
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych


Dodatki SourceMod













