Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Prośba o poprawkę pluginu DrXpMod.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 Rafiq

    Pomocny

  • Użytkownik

Reputacja: 6
Nowy

  • Postów:54
  • Imię:Rafał
  • Lokalizacja:de_nuke
Offline

Napisano 17.02.2012 15:57

Witam. Mianowicie plugin nie zawsze dodaje xp za zabicie gracza z przeciwnej drużyny. Dałoby radę to poprawić? Ewentualnie można przerobić tak aby za zabicie kogokolwiek dawało xp, gdyż jest to na DeathRun, gdzie nie można zabić swoich. Proszę o pomoc.

/* Script generated by Pawn Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fun>
#include <nvault>
#define PLUGIN "DeathrunExpMod"
#define AUTHOR "ToJaTwojTelefon & QTM. Peyote - podstawa silnika"
#define VERSION "1.0"
#define STANDARDOWA_SZYBKOSC 250.0
#define STANDARDOWA_GRAWITACJA 1.0
#define ZADANIE_POKAZ_INFORMACJE 672
#define ZADANIE_POKAZ_REKLAME 768
#define ZADANIE_USTAW_SZYBKOSC 832
new SyncHudObj;
new SyncHudObj2;
new SyncHudObj3;
new g_vault;
new doswiadczenia_za_zabojstwo;
new nazwa_gracza[33][64];
new klasa_gracza[33];
new poziom_gracza[33] = 1;
new doswiadczenie_gracza[33];
new nowa_klasa_gracza[33]
enum { NONE = 0,Skoczek, Szybcior, Multikiller};
new const Float:szybkosc_klasy[] = {0.0, 1.0, 1.2, 1.2};
new const Float:grawitacja_klasy[] = {1.0, 0.1, 1.0, 0.1}
new const nazwy_klas[][] = {"Brak",
"Skoczek",
"Szybcior",
"MultiKiller(P)"
};
new const opisy_klas[][] = {"Brak",
"Na start jestes szybszy od pozostalych",
"Na start masz wieksza gravitacje od pozostalych",
"Na start masz wieksza grawitacja i szybkosc od pozostalych"
};
new punkty_gracza[33];
new kondycja_gracza[33];
new Float:szybkosc_gracza[33];
new grawitacja_gracza[33];
new Float:grav
new bool:gracz_resetuje[33];
new const doswiadczenie_poziomu[] = {0,35,140,315,560,875,1260,1715,2240,2835,3500,4235,5040,5915,6860,7875,8960,10115,11340,12635,14000,15435,16940,18515,20160,21875,23660,25515,27440,29435,31500,33635,35840,38115,40460,42875,45360,47915,50540,53235,56000,58835,61740,64715,67760,70875,
74060,77315,80640,84035,87500,91035,94640,98315,102060,105875,109760,113715,117740,121835,126000,130235,134540,138915,143360,147875,152460,157115,161840,166635,171500,176435,181440,186515,191660,196875,202160,207515,212940,218435,224000,229635,235340,241115,246960,252875,258860,
264915,271040,277235,283500,289835,296240,302715,309260,315875,322560,329315,336140,343035,350000,357035,364140,371315,378560,385875,393260,400715,408240,415835,423500,431235,439040,446915,454860,462875,470960,479115,487340,495635,504000,512435,520940,529515,538160,546875,555660,564515,573440,
582435,591500,600635,609840,619115,628460,637875,647360,656915,666540,676235,686000,695835,705740,715715,725760,735875,746060,756315,766640,777035,787500,798035,808640,819315,830060,840875,851760,862715,873740,884835,896000,907235,918540,929915,941360,952875,964460,976115,987840,999635,1011500,1023435,1035440,
1047515,1059660,1071875,1084160,1096515,1108940,1121435,1134000,1146635,1159340,1172115,1184960,1197875,1210860,1223915,1237040,1250235,1263500,1276835,1290240,1303715,1317260,1330875,1344560,1358315,1372140,1386035,1400000};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_vault = nvault_open("DeathrunExpMod");

RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
register_logevent("PoczatekRundy", 2, "1=Round_Start");
register_event("DeathMsg", "Death", "ade");
register_event("CurWeapon","CurWeapon","be", "1=1");

register_clcmd("say /klasa", "WybierzKlase");
register_clcmd("say /klasy", "OpisKlasy");
register_clcmd("say /reset", "KomendaResetujPunkty");

register_concmd("dr_setlvl", "cmd_setlvl", ADMIN_KICK, "<name> <level>");

register_cvar("dr_killxp", "50");
doswiadczenia_za_zabojstwo = get_cvar_num("dr_killxp");
SyncHudObj = CreateHudSyncObj();
SyncHudObj2 = CreateHudSyncObj();
SyncHudObj3 = CreateHudSyncObj();

set_task(30.0, "Pomoc");
}
public plugin_precache()
{
precache_sound("csmps/sound/select.wav");
precache_sound("csmps/sound/gained_level.wav");
}
public Odrodzenie(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
return PLUGIN_CONTINUE;

if(nowa_klasa_gracza[id])
{
klasa_gracza[id] = nowa_klasa_gracza[id];
nowa_klasa_gracza[id] = 0;
WczytajDane(id, klasa_gracza[id]);
}

if(!klasa_gracza[id])
{
WybierzKlase(id);
return PLUGIN_CONTINUE;
}

switch(klasa_gracza[id])
{
case Skoczek:{}

case Szybcior:{}

case Multikiller:{}
}

if(gracz_resetuje[id])
{
ResetujPunkty(id);
gracz_resetuje[id] = false;
}

if(punkty_gracza[id]>0)
PrzydzielPunkty(id);

szybkosc_gracza[id] = STANDARDOWA_SZYBKOSC*szybkosc_klasy[klasa_gracza[id]]+floatround(kondycja_gracza[id]*1.3);
grav = STANDARDOWA_GRAWITACJA-grawitacja_klasy[klasa_gracza[id]]-grawitacja_gracza[id] / 300.0;

return PLUGIN_CONTINUE;
}
public PoczatekRundy()
{
for(new id=0;id<=32;id++)
{
if(!is_user_alive(id))
continue;

set_task(0.1, "UstawSzybkosc", id+ZADANIE_USTAW_SZYBKOSC);
}
}
public Death()
{
new id = read_data(2);
new attacker = read_data(1);

if(!is_user_alive(attacker) || !is_user_connected(attacker))
return PLUGIN_CONTINUE;

if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
{
new nowe_doswiadczenie = 0;

nowe_doswiadczenie += doswiadczenia_za_zabojstwo;

if(poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie += poziom_gracza[id] - poziom_gracza[attacker];

set_hudmessage(255, 212, 0, 0.50, 0.33, 1, 6.0, 4.0);
ShowSyncHudMsg(attacker, SyncHudObj2, "+%i", nowe_doswiadczenie);

doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
}
SprawdzPoziom(attacker);
return PLUGIN_CONTINUE;
}
public client_connect(id)
{
klasa_gracza[id] = 0;
poziom_gracza[id] = 0;
doswiadczenie_gracza[id] = 0;
punkty_gracza[id] = 0;
kondycja_gracza[id] = 0;
szybkosc_gracza[id] = 0.0;
grawitacja_gracza[id] = 0;

get_user_name(id, nazwa_gracza[id], 63);

remove_task(id+ZADANIE_POKAZ_INFORMACJE);
remove_task(id+ZADANIE_POKAZ_REKLAME);
remove_task(id+ZADANIE_USTAW_SZYBKOSC);

set_task(10.0, "PokazReklame", id+ZADANIE_POKAZ_REKLAME);
set_task(3.0, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE);
}
public client_disconnect(id)
{
remove_task(id+ZADANIE_POKAZ_INFORMACJE);
remove_task(id+ZADANIE_POKAZ_REKLAME);
remove_task(id+ZADANIE_USTAW_SZYBKOSC);

ZapiszDane(id);
}
public OpisKlasy(id)
{
new menu = menu_create("Wybierz klase:", "OpisKlasy_Handle");
for(new i=1; i<sizeof nazwy_klas; i++)
menu_additem(menu, nazwy_klas[i]);
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);

client_cmd(id, "spk csmps/sound/select");
}
public OpisKlasy_Handle(id, menu, item)
{
client_cmd(id, "spk csmps/sound/select");

if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
client_print(id, print_chat, "[DrExpMod] %s: %s", nazwy_klas[item+1], opisy_klas[item+1]);
menu_display(id, menu);

return PLUGIN_CONTINUE;
}
public WybierzKlase(id)
{
new menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
new klasa[50];
for(new i=1; i<sizeof nazwy_klas; i++)
{
WczytajDane(id, i);
format(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
menu_additem(menu, klasa);
}

WczytajDane(id, klasa_gracza[id]);

menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);

client_cmd(id, "spk csmps/sound/select");
}
public WybierzKlase_Handle(id, menu, item)
{
client_cmd(id, "spk csmps/sound/select");

if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

item++;

if(item == klasa_gracza[id])
return PLUGIN_CONTINUE;

if(item == Multikiller && !(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print(id, print_chat, "[DrExpMod] Nie masz uprawnien aby kozystac z klasy premium.");
WybierzKlase(id);
return PLUGIN_CONTINUE;
}

if(klasa_gracza[id])
{
nowa_klasa_gracza[id] = item;
client_print(id, print_chat, "[DrExpMod] Klasa zostanie zmieniona w nastepnej rundzie.");
}
else
{
klasa_gracza[id] = item;
WczytajDane(id, klasa_gracza[id]);
Odrodzenie(id);
}
return PLUGIN_CONTINUE;
}
public PrzydzielPunkty(id)
{
new kondycja[60];
new grawitacja[60];
new tytul[25];
format(kondycja, 59, "Kondycja: \r%i \y(Zwieksza tempo chodu)", kondycja_gracza[id]);
format(grawitacja, 59, "Grawitacja: \r%i \y(Wyzej skaczesz)", grawitacja_gracza[id]);
format(tytul, 24, "Przydziel Punkty(%i):", punkty_gracza[id]);
new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
menu_additem(menu, kondycja);
menu_additem(menu, grawitacja);
menu_display(id, menu);
}
public PrzydzielPunkty_Handler(id, menu, item)
{
client_cmd(id, "spk csmps/sound/select");

if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

switch(item)
{
case 0:
{
if(klasa_gracza[id] == Skoczek)
{
client_print(id, print_chat, "[DrExpMod] Ta statystyke moze uzywac tylko Szybcior i MultiKiller");
PrzydzielPunkty(id)
return PLUGIN_CONTINUE;
}
if(kondycja_gracza[id]<100)
kondycja_gracza[id]++;
else
client_print(id, print_chat, "[DrExpMod] Maxymalny poziom zwinnosci osiagniety");
}
case 1:
{
if(klasa_gracza[id] == Szybcior)
{
client_print(id, print_chat, "[DrExpMod] Ta statystyke moze uzywac tylko Skoczek i MultiKiller");
PrzydzielPunkty(id)
return PLUGIN_CONTINUE;
}
if(grawitacja_gracza[id]<100)
grawitacja_gracza[id]++;
else
client_print(id, print_chat, "[DrExpMod] Maxymalny poziom grawitacji osiagnety");
}
}

punkty_gracza[id]--;

if(punkty_gracza[id]>0)
PrzydzielPunkty(id);

return PLUGIN_CONTINUE;
}
public ResetujPunkty(id)
{
punkty_gracza[id] = poziom_gracza[id]*2-2;
kondycja_gracza[id] = 0;
grawitacja_gracza[id] = 0;
}
public KomendaResetujPunkty(id)
{
client_print(id, print_chat, "[DrExpMod] Umiejetnosci zostana zresetowane w nastepnej rundzie.");
client_cmd(id, "spk csmps/sound/select");
gracz_resetuje[id] = true;
}
public ZapiszDane(id)
{
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-%i-DrXPMOD", nazwa_gracza[id], klasa_gracza[id]);
format(vaultdata,255,"%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], kondycja_gracza[id], grawitacja_gracza[id]);
nvault_set(g_vault,vaultkey,vaultdata);
}
public WczytajDane(id, klasa)
{
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-%i-DrXPMOD", nazwa_gracza[id], klasa);
format(vaultdata,255,"%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], kondycja_gracza[id], grawitacja_gracza[id]);
nvault_get(g_vault,vaultkey,vaultdata,255);

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

new doswiadczeniegracza[32], poziomgracza[32], zwinnoscgracza[32], grawitacja[32];

parse(vaultdata, doswiadczeniegracza, 31, poziomgracza, 31, zwinnoscgracza, 31, grawitacja, 31);

doswiadczenie_gracza[id] = str_to_num(doswiadczeniegracza);
poziom_gracza[id] = str_to_num(poziomgracza)>0?str_to_num(poziomgracza):1;
kondycja_gracza[id] = str_to_num(zwinnoscgracza);
grawitacja_gracza[id] = str_to_num(grawitacja);
punkty_gracza[id] = (poziom_gracza[id]-1)*2-kondycja_gracza[id]-grawitacja_gracza[id];
}
public SprawdzPoziom(id)
{
if(poziom_gracza[id] < 201)
{
while(doswiadczenie_gracza[id] >= doswiadczenie_poziomu[poziom_gracza[id]])
{
poziom_gracza[id]++;
set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
ShowSyncHudMsg(id, SyncHudObj3, "Awansowales do nastepnego poziomu!");
client_cmd(id, "spk csmps/sound/gained_level");
}

punkty_gracza[id] = (poziom_gracza[id]-1)*2-kondycja_gracza[id]-grawitacja_gracza[id];
}
ZapiszDane(id);
}
public PokazInformacje(id)
{
id -= ZADANIE_POKAZ_INFORMACJE;

set_task(0.1, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE);

if(!is_user_alive(id))
{
new target = entity_get_int(id, EV_INT_iuser2);

if(target == 0)
return PLUGIN_CONTINUE;

set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
ShowSyncHudMsg(id, SyncHudObj, "Klasa : %s^nDoswiadczenie : %i / %i^nPoziom : %i", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], doswiadczenie_poziomu[poziom_gracza[target]], poziom_gracza[target]);

return PLUGIN_CONTINUE;
}
new szTxt[64];
formatex(szTxt, sizeof szTxt - 1, "[Klasa: %s | Doswiadczenie: %i / %i | Poziom: %i]", nazwy_klas[klasa_gracza[id]], doswiadczenie_gracza[id], doswiadczenie_poziomu[poziom_gracza[id]], poziom_gracza[id]);
message_begin(MSG_ONE, get_user_msgid("StatusText"), {0,0,0}, id);
write_byte(0);
write_string(szTxt);
message_end();
return PLUGIN_CONTINUE;
}
public PokazReklame(id)
{
id-=ZADANIE_POKAZ_REKLAME;
client_print(id, print_chat, "Witaj na DeathrunExpMod stworzonej przez ToJaTwojTelefon na podstawie modu Call of Duty by QTM. Peyote");
}
public UstawSzybkosc(id)
{
id -= id>32? ZADANIE_USTAW_SZYBKOSC: 0;

if(klasa_gracza[id])
{
set_user_maxspeed(id, szybkosc_gracza[id]);
set_user_gravity(id, grav);
}
}
public Pomoc()
{
switch(random(3))
{
case 0: client_print(0, print_chat, "[DrExpMod] Aby zresetowac umiejetnosci napisz /reset.");
case 1: client_print(0, print_chat, "[DrExpMod] Aby zmienic klase napisz /klasa.");
case 2: client_print(0, print_chat, "[DrExpMod] Aby zobaczyc opis klas napisz /klasy.");
}
set_task(36.0, "Pomoc");
}
public CurWeapon(id)
{
UstawSzybkosc(id);
}
public cmd_setlvl(id, level, cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED;
new arg1[33];
new arg2[6];
read_argv(1, arg1, 32);
read_argv(2, arg2, 5);
new player = cmd_target(id, arg1);
new value = str_to_num(arg2)-1;

doswiadczenie_gracza[player] = doswiadczenie_poziomu[value];
poziom_gracza[player] = 0;
SprawdzPoziom(player);
return PLUGIN_HANDLED;
}

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych