[ROZWIĄZANE] automatyczna zmiana teamu gra...
Eustachy8
31.10.2012
Witam!
Potrzebne są mi 2 rzeczy:
1. Chcę, aby TT po zabiciu stawał się CT (podejrzewam, że znalazł bym to w zombi modzie, bo zarażeniu CT staje się TT) i spawnił się w losowym miejscu z CSDM
2. Co pięć sekund dodawało fraga graczowi, an pewno coś z set_task, ale nie wiem jak dokładnie to zrobić
Potrzebne są mi 2 rzeczy:
1. Chcę, aby TT po zabiciu stawał się CT (podejrzewam, że znalazł bym to w zombi modzie, bo zarażeniu CT staje się TT) i spawnił się w losowym miejscu z CSDM
2. Co pięć sekund dodawało fraga graczowi, an pewno coś z set_task, ale nie wiem jak dokładnie to zrobić
Gość_21977_* 31.10.2012
2. nie wiem do końca, co masz na myśli, tu daję Ci plugin, który co 5 sekund przyznaje wszystkim CT i TT po 1 fragu:
#include <amxmodx>
#include <fun>
new maxPlayers, id;
public plugin_init(){
register_plugin("5sec frag", "0.1", "benio101");
}
public plugin_cfg(){
maxPlayers=get_maxplayers();
set_task(5.0, "frag", .flags="b");
}
public frag(){
for(id=1; id<=maxPlayers; ++id){
if(is_user_connected(id) && !is_user_hltv(id) && get_user_team(id)%3){
set_user_frags(id, get_user_frags(id)+1);
}
}
}
Eustachy8
31.10.2012
elegancko, tzn tak wygląda. O to mi chodzi (ma dawać tylko CT, ale to już sam poprawie), na razie nie przetestuje bo pierwsze testy będą jak będzie mod już w fazie końcowej +
ale potrzebuje jeszcze 1.
Użytkownik Eustachy8 edytował ten post 31.10.2012 20:58
ale potrzebuje jeszcze 1.
Użytkownik Eustachy8 edytował ten post 31.10.2012 20:58
K!113r
31.10.2012
cs_set_user_team(player,( g_iTeam[player] = g_iTeam[player] == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T))
if (is_user_alive(player))
ExecuteHamB(Ham_CS_RoundRespawn, player)
Prosto z BaseBuildera (komenda do zmiany drużyny), player to id gracza którego chcesz przenieść, w tablicy g_iTeam jest zapisany aktualna drużyna (można użyć cs_get_user_team() lecz będziesz kilka razy wywoływał funkcję, czasem lepiej coś zapisać )
K!113r
31.10.2012
to jest wycinek kodu, możesz z tego zrobić np. komendę przerzucającą gracza do innej drużyny bez śmierci, lub dodać do zdarzenia śmierci (należy zmienić warunek, ponieważ trzeba jeszcze gracza odrodzić )
Eustachy8
31.10.2012
to mnie trochę zmyliło
Ham_CS_RoundRespawn
w takim razie jutro postaram się to skleić do kupy i tam znać czy wszystko ładnie działa
Ham_CS_RoundRespawn
w takim razie jutro postaram się to skleić do kupy i tam znać czy wszystko ładnie działa
speedkill
01.11.2012
O takie coś chodziło ?
#include <amxmodx> #include <fun> #include <cstrike> new maxPlayers; public plugin_init(){ register_plugin("5sec frag", "0.1", "benio101"); } public plugin_cfg(){ maxPlayers = get_maxplayers(); set_task(5.0, "frag", .flags="b"); register_event("DeathMsg", "DeathMsg", "a") } public frag(){ for(new id=1; id<=maxPlayers; ++id){ if(is_user_connected(id) && !is_user_hltv(id) && !is_user_bot(id) && get_user_team(id) == 2){ set_user_frags(id, get_user_frags(id)+1); } } } public DeathMsg(){ new g_Victim = read_data(2); if(is_user_connected(g_Victim)){ if(get_user_team(g_Victim == 1)){ cs_set_user_team(g_Victim, CS_TEAM_CT); } } }
Eustachy8
01.11.2012
nie do końca, TT jak zabije staje się CT, a zabity CT staje się TT ale reszta w najlepszym porządeczku
Gość_21977_* 01.11.2012
#include <amxmodx>
#include <fun>
#include <cstrike>
new maxPlayers;
public plugin_init(){
register_plugin("5sec frag", "0.3", "speedkill & benio101");
register_event("DeathMsg", "DeathMsg", "a");
}
public plugin_cfg(){
maxPlayers = get_maxplayers();
set_task(5.0, "frag", .flags="b");
}
public frag(){
for(new id=1; id<=maxPlayers; ++id){
if(is_user_connected(id) && !is_user_hltv(id) && !is_user_bot(id) && get_user_team(id) == 2){
set_user_frags(id, get_user_frags(id)+1);
}
}
}
public DeathMsg(){
new g_Victim = read_data(2);
if(is_user_connected(g_Victim)){
new vTeam=get_user_team(g_Victim);
switch(vTeam){
case 1:{
cs_set_user_team(g_Victim, CS_TEAM_CT);
}
case 2:{
cs_set_user_team(g_Victim, CS_TEAM_T);
}
}
}
}
Eustachy8
01.11.2012
nie do końca mnie zrozumieliście, Jeżeli TT zabije CT, staje się nim, a CT zabity staje się TT. Ale jeżeli CT zabije TT nic ma się nie dziać, po prostu naliczyć fraga. Czy tak właśnie jest, a ja źle to widzę?
Gość_21977_* 01.11.2012
#include <amxmodx>
#include <fun>
#include <cstrike>
new maxPlayers;
public plugin_init(){
register_plugin("5sec frag", "0.4", "speedkill & benio101");
register_event("DeathMsg", "DeathMsg", "a");
}
public plugin_cfg(){
maxPlayers = get_maxplayers();
set_task(5.0, "frag", .flags="b");
}
public frag(){
for(new id=1; id<=maxPlayers; ++id){
if(is_user_connected(id) && !is_user_hltv(id) && !is_user_bot(id) && get_user_team(id) == 2){
set_user_frags(id, get_user_frags(id)+1);
}
}
}
public DeathMsg(g_Killer, g_Victim){
if(is_user_connected(g_Killer) && is_user_connected(g_Victim)){
if(get_user_team(g_Killer)==1 && get_user_team(g_Victim)==2){
cs_set_user_team(g_Killer, CS_TEAM_CT);
cs_set_user_team(g_Victim, CS_TEAM_T);
}
}
}
Eustachy8
01.11.2012
Czy to ma racje bytu?
Brakuje mi już tylko jednej rzeczy i nie wiem jak ją ugryźć.
A mianowicie, chcę zrobić ten modzik:
http://amxx.pl/topic...nd-enemy-lines/
brakuje mi punktu pierwszego, plugin ma automatycznie ustawiać graczy w drużynach. Dodatkowo musi ustawiać 0 w tablicy g_ltimer[33]; odpowiednim osobom (tym co zostaną przydzieleni do CT)
Użytkownik Eustachy8 edytował ten post 01.11.2012 14:19
#include <amxmodx> #include <fun> #include <cstrike> #include <csx> new maxPlayers; new g_ltimer[33]; new g_msgsync; public plugin_init(){ register_plugin(" BEL", "0.1", "Eustachy8 (+speedkill & benio101)"); register_event("DeathMsg", "DeathMsg", "a"); g_msgsync = CreateHudSyncObj(); } public plugin_cfg(){ maxPlayers = get_maxplayers(); set_task(5.0, "frag", .flags="b"); set_task(5.0, "dispTime", .flags="b"); } public frag(){ for(new id=1; id<=maxPlayers; ++id){ if(is_user_connected(id) && !is_user_hltv(id) && !is_user_bot(id) && get_user_team(id) == 2){ set_user_frags(id, get_user_frags(id)+1); } } } public DeathMsg(g_Killer, g_Victim){ if(is_user_connected(g_Killer) && is_user_connected(g_Victim)){ if(get_user_team(g_Killer)==1 && get_user_team(g_Victim)==2){ cs_set_user_team(g_Killer, CS_TEAM_CT); cs_set_user_team(g_Victim, CS_TEAM_T); spawn_func(g_Killer); g_ltimer[g_Killer]=0; } } } public spawn_func(id) { new parm[1]; parm[0]=id; set_task(0.5,"player_spawn",72,parm,1); } public player_spawn(parm[1]) { spawn(parm[0]); } public dispTime(id) { if (get_user_team(id)==2) { set_hudmessage(255, 255, 255, 0.10, 0.80, 0, 1.0, 1.0, 0.01, 0.01, -1); ShowSyncHudMsg(0, g_msgsync, "Zyjesz juz: %d sekund", g_ltimer[id]); ++g_ltimer[id]; } }
Brakuje mi już tylko jednej rzeczy i nie wiem jak ją ugryźć.
A mianowicie, chcę zrobić ten modzik:
http://amxx.pl/topic...nd-enemy-lines/
brakuje mi punktu pierwszego, plugin ma automatycznie ustawiać graczy w drużynach. Dodatkowo musi ustawiać 0 w tablicy g_ltimer[33]; odpowiednim osobom (tym co zostaną przydzieleni do CT)
Użytkownik Eustachy8 edytował ten post 01.11.2012 14:19
Gość_21977_* 01.11.2012
W ten sposób spawn będzie powodował pewne problemy z kamerą w specyficznych sytuacjach.
Jeśli koniecznie nie chcesz korzystać z Kanapki, to skorzystaj z poprawnej formy ożywiania graczy.
Jeśli koniecznie nie chcesz korzystać z Kanapki, to skorzystaj z poprawnej formy ożywiania graczy.
speedkill
01.11.2012
Także funkcja dispTime(id), nie zadziała poprawnie, ponieważ nie ma tam pętli
Eustachy8
01.11.2012
set_task(5.0, "dispTime", .flags="b");
(tu ma być 1.0)
dlaczego nie będzie? przecież jest ona wywoływana co sekunde i za każdym razem zmienia czas o 1
wrzuciłem w tej postaci:
i poprawnie działa tylko dodawanie fragów co 5 sec
nie przenosi do przeciwnego teamu, nie ma odliczania
(tu ma być 1.0)
dlaczego nie będzie? przecież jest ona wywoływana co sekunde i za każdym razem zmienia czas o 1
wrzuciłem w tej postaci:
Spoiler
i poprawnie działa tylko dodawanie fragów co 5 sec
nie przenosi do przeciwnego teamu, nie ma odliczania
Eustachy8
01.11.2012
ok rozumiem, ale występuje problem, nie widzi to nikt ;d więc zrobiłem to w sposób jeszcze dziwaczniejszy
Eustachy8
01.11.2012
nie mogę już edytować, nie skleja postów, sorry, za wygląd spamu typowego ;<
Do rzeczy:
Odliczania i dodawanie fragów działa elegancko. Jednak event deathMsg jest olewany całkowicie, nic się nie dzieje podczas gdy TT zabija CT
Użytkownik Eustachy8 edytował ten post 01.11.2012 20:00
Do rzeczy:
Odliczania i dodawanie fragów działa elegancko. Jednak event deathMsg jest olewany całkowicie, nic się nie dzieje podczas gdy TT zabija CT
register_event("DeathMsg", "DeathMsg", "a"); . . . public DeathMsg(g_Killer, g_Victim){ if(is_user_connected(g_Killer) && is_user_connected(g_Victim)){ if(get_user_team(g_Killer)==1 && get_user_team(g_Victim)==2){ cs_set_user_team(g_Killer, CS_TEAM_CT); cs_set_user_team(g_Victim, CS_TEAM_T); spawn_func(g_Killer); g_ltimer[g_Killer]=0; new szName[64]; get_user_name(g_Victim,szName,charsmax(szName)); new szName2[64]; get_user_name(g_Killer,szName2,charsmax(szName2)); ColorChat(0,RED,"[ BEL ] ^x04%s zyl ^x04%i sec. Zabil go ^x04%s",szName,g_ltimer[g_Victim],szName2) } } }
Użytkownik Eustachy8 edytował ten post 01.11.2012 20:00
K!113r
01.11.2012
event death chyba nie ma argumentów, trzeba je zczytać:
powinno działać, zawsze możesz spróbować z kanapką:
new iKiller = read_data( 1 );
new iVictim = read_data( 2 );
powinno działać, zawsze możesz spróbować z kanapką:
RegisterHam(Ham_Killed, "player", "Ham_Killed_Post", 1);
-
-
-
public Ham_Killed_Post(vid, kid)