Pytanie o pętle i problem z odliczaniem
Andrzejek
25.01.2013
Witam, mam do was kilka pytań
1. Jak lepiej robić mod? Jeden plugin (cały system) czy osobne pluginy?
2. Poproszę o poprawną pętle, bo kiedyś mi Benio podał ale nie zapisałem sobie, bo mam np. taką:
Co oznacza is_user_connected(id)? jak dopisze przed !
Co oznacza is_user_alive(id)? jak dopisze przed !
3. Odliczanie:
I jak mamy
to czy dało by to dodać do innej osobnej funkcji? Jeśli tak to proszę o przykład
Źródło odliczania: http://amxx.pl/topic...ryb-odliczania/
4. Kolejne odliczanie:
Jak zrobić np. 2 odliczania w 1 funkcji? Żeby jak najmniej kodu zajmowało ale żeby dobrze działało
1. Jak lepiej robić mod? Jeden plugin (cały system) czy osobne pluginy?
2. Poproszę o poprawną pętle, bo kiedyś mi Benio podał ale nie zapisałem sobie, bo mam np. taką:
for(new i = 1; i<= maxpl; i++) {
if(is_user_connected(i) && is_user_alive(i)) {
if(get_user_team(i) == 2) {
}
if(get_user_team(i) == 1) {
}
}
}
Co oznacza is_user_connected(id)? jak dopisze przed !
Co oznacza is_user_alive(id)? jak dopisze przed !
3. Odliczanie:
new Odliczanie[33]
public UruchomOdliczanie(id)
{
set_user_godmode(id, 1)
Odliczanie[id] = 30
if(task_exists(id + 3431))
{
remove_task(id + 3431)
}
set_task(1.0, "Koniec", id + 3431, _, _, "b")
return PLUGIN_CONTINUE
}
public Koniec(task_id)
{
new id = task_id - 3431
set_hudmessage(0, 255, 0, 0.03, 0.76, 2, 0.02, 1.0, 0.01)
show_hudmessage(id, "Za %d sekund stracisz Niesmiertelnosc.", Odliczanie[id])
Odliczanie[id] -= 1
if(Odliczanie[id] <= 0)
{
set_user_godmode(id, 0);
}
}
I jak mamy
show_hudmessage(id, "Za %d sekund stracisz Niesmiertelnosc.", Odliczanie[id])
to czy dało by to dodać do innej osobnej funkcji? Jeśli tak to proszę o przykład
Źródło odliczania: http://amxx.pl/topic...ryb-odliczania/
4. Kolejne odliczanie:
start(99912, 30);
public start(taskid, start)
{
static count;
if(start)
count = start;
if(--count > 0)
{
set_hudmessage(255, 0, 0, 0.10, 0.23, 0, 6.0, 1.0)
ShowSyncHudMsg(0, hud3, "Jakis tekst")
if(count <= 10)
{
new word[6];
num_to_word(count, word, 5);
client_cmd(0, "spk ^"%s^"", word);
}
set_task(1.0, "start", taskid);
}
else
{
//wywolanie dalszej funkcji
}
}
Jak zrobić np. 2 odliczania w 1 funkcji? Żeby jak najmniej kodu zajmowało ale żeby dobrze działało
AztekHQS 25.01.2013
1. Jeśli chcesz na prawdę duży mod to lepiej w osobnych pluginach.1. Jak lepiej robić mod? Jeden plugin (cały system) czy osobne pluginy?
2. Poproszę o poprawną pętle, bo kiedyś mi Benio podał ale nie zapisałem sobie, bo mam np. taką:
Co oznacza is_user_connected(id)? jak dopisze przed !
Co oznacza is_user_alive(id)? jak dopisze przed !
Jak zrobić np. 2 odliczania w 1 funkcji? Żeby jak najmniej kodu zajmowało ale żeby dobrze działało
2. Pętla od benia jest dobra ale usunąłbym sprawdzanie czy gracz jest połączony, bo po tym jest sprawdzanie czy jest żywy, a jak jest żywy to musi być połączony
Jeśli dodasz ! przed is_user_connected(id) to funkcja sprawdza czy index (ID jest niepołączony
Jeśli dodasz ! przed is_user_alive(d) to funkcja sprawdza czy index (ID) jest nieżywy
speedkill
25.01.2013
Ad.1) Najlepiej podzielić na osobne pluginy, ma się wtedy o wiele większą swobodę przy edytowaniu pluginu.
Ad.2) Skoro sprawdzasz, czy gracz żyję nie potrzebujesz sprawdzania, czy jest połączony z serwerem. Wykrzyknik jest to negacja -> http://pl.wikipedia.org/wiki/Negacja jeżeli dodajesz znak negacji przed is_user_alive(id), to sprawdzasz czy gracz nie żyje, tak samo z is_user_connected(id). Co do pętli:
Jak widzisz, usunąłem sprawdzanie czy gracz jest połączony. Dodałem także przy warunku z teamem gracza else if.
Ad.3) Można przenieść, ale po co ? Dla pokazania huda nie ma sensu tworzyć nowej funkcji, chyba, że używasz tego huda / odliczania wiele razy w innych funkcjach, wtedy można stworzyć jedną funkcję, która będzie pokazywać wiadomość na hud.
Jak pisałem, takie coś nie ma sensu.
Ad.4) Dwa odliczania w jednej funkcji nie będą opytmalne.
Ad.2) Skoro sprawdzasz, czy gracz żyję nie potrzebujesz sprawdzania, czy jest połączony z serwerem. Wykrzyknik jest to negacja -> http://pl.wikipedia.org/wiki/Negacja jeżeli dodajesz znak negacji przed is_user_alive(id), to sprawdzasz czy gracz nie żyje, tak samo z is_user_connected(id). Co do pętli:
//Globalne new maxpl; public plugin_cfg(){ maxpl = get_maxplayers(); } //Pętla for(new i = 1; i <= maxpl; i++){ if(is_user_alive(i)){ if(get_user_team(i) == 1){ } else if(get_user_team(i) == 2){ } } }
Jak widzisz, usunąłem sprawdzanie czy gracz jest połączony. Dodałem także przy warunku z teamem gracza else if.
Ad.3) Można przenieść, ale po co ? Dla pokazania huda nie ma sensu tworzyć nowej funkcji, chyba, że używasz tego huda / odliczania wiele razy w innych funkcjach, wtedy można stworzyć jedną funkcję, która będzie pokazywać wiadomość na hud.
new Odliczanie[33] public UruchomOdliczanie(id) { set_user_godmode(id, 1) Odliczanie[id] = 30 if(task_exists(id + 3431)) { remove_task(id + 3431) } set_task(1.0, "Koniec", id + 3431, _, _, "b") return PLUGIN_CONTINUE } public Koniec(task_id) { new id = task_id - 3431 MojaFunkcja(id); Odliczanie[id] -= 1 if(Odliczanie[id] <= 0) { set_user_godmode(id, 0); } } public MojaFunkcja(id){ set_hudmessage(0, 255, 0, 0.03, 0.76, 2, 0.02, 1.0, 0.01) show_hudmessage(id, "Za %d sekund stracisz Niesmiertelnosc.", Odliczanie[id]) }
Jak pisałem, takie coś nie ma sensu.
Ad.4) Dwa odliczania w jednej funkcji nie będą opytmalne.
Andrzejek
25.01.2013
1. Czyli muszę własny include?
2. To była z kodu zabrana pętla, a Benio mi podawał taką bardziej optymalną pętle: new team switch case 1: coś takiego nie pamietam dokładnie
3. OK dzięki sprawdzę, bo mi chodzi że na serwerze max mogą być pokazywane 4 hudy, i dlatego chce dodać odliczanie do 1 huda, żeby były 3 hudy na serwerze.
4. Ok, dzięki czyli osobne pluginy tylko
2. To była z kodu zabrana pętla, a Benio mi podawał taką bardziej optymalną pętle: new team switch case 1: coś takiego nie pamietam dokładnie
3. OK dzięki sprawdzę, bo mi chodzi że na serwerze max mogą być pokazywane 4 hudy, i dlatego chce dodać odliczanie do 1 huda, żeby były 3 hudy na serwerze.
4. Ok, dzięki czyli osobne pluginy tylko
speedkill
25.01.2013
Ad.1) Musisz poczytać o natywach.
Ad.2) Można dodać switch(get_user_team(i)), a potem dodać case 1, case 2.
Ad.3) Używaj: CreateHudSyncObj()
Ad.4) Tutaj zależy, bo może być osobny plugin, jak i osobna funkcja do odliczania.
Ad.2) Można dodać switch(get_user_team(i)), a potem dodać case 1, case 2.
Ad.3) Używaj: CreateHudSyncObj()
Ad.4) Tutaj zależy, bo może być osobny plugin, jak i osobna funkcja do odliczania.