Problem z naświetlaniem Ninji? Znak widocz...
DioW
08.07.2010
Witam,
Jest to mój 1 tutorial którego postanowiłem napisać gdyż sam miałem bardzo duży problem z rozwiązaniem tych problemów.
Mianowicie:
Po 1. Ninja po naświetleniu nie znika automatycznie, tylko musi wcisnąć "Q" albo zmienić nóż na nóż
Po 2. Znaczek widoczności ninji co bardzo polepsza grę!
Ten tutorial usuwa bląd 1 i dodaje 2

To co u góry ale w kolorze pomarańczowym.
Zaczynamy!
Krok 1.
Znajdujemy linijkę:
I usuwamy wszysto pod aż do linijki
Krok 2.
Dodaj pod:
To:
Krok 3.
Usuwamy całą funkcję un_rander
Krok 4.
Dodaj na miejsce funkcji un_rander
Efekt końcowy:
Ps. W efekcie końcowym dodałem kawałek kodu za dużo abyście zobaczyli w jakim miejscu i ile klamer ma mieć dokładnie funkcja
Jeżeli wpadła jakaś literówka lub jakiś byczek to proszę o poprawienie
Użytkownik Goliath edytował ten post 25.10.2011 16:45
Jest to mój 1 tutorial którego postanowiłem napisać gdyż sam miałem bardzo duży problem z rozwiązaniem tych problemów.
Mianowicie:
Po 1. Ninja po naświetleniu nie znika automatycznie, tylko musi wcisnąć "Q" albo zmienić nóż na nóż
Po 2. Znaczek widoczności ninji co bardzo polepsza grę!
Ten tutorial usuwa bląd 1 i dodaje 2

To co u góry ale w kolorze pomarańczowym.
Zaczynamy!
Krok 1.
Znajdujemy linijkę:
if ((get_user_team(id)!=get_user_team(index1)) && (index1!=0))
I usuwamy wszysto pod aż do linijki
//Before freeze_ended checklub(jeżeli nie ma @up)
if (((player_b_silent[id] > 0) || (player_class[id] == Zabojca)) && is_user_alive(id))
Krok 2.
Dodaj pod:
if ((get_user_team(id)!=get_user_team(index1)) && (index1!=0))
To:
{
if ((index1!=54) && (is_user_connected(index1))) set_user_rendering(index1,kRenderFxGlowShell,flashlight_r,flashlight_g,flashlight_b,kRenderNormal,4)
remove_task(TASK_FLASH_LIGHT+index1);
set_task(7.5, "un_rander",TASK_FLASH_LIGHT+index1)
//set_task(15.0,"un_rander",TASK_NAME,index1)
if(player_class[index1] == Ninja)
{
message_begin(MSG_ONE,g_msg_statusicon,{0,0,0},index1)
write_byte(2)
write_string("dmg_bio")
write_byte(255)
write_byte(0)
write_byte(0)
message_end()
}
}
Krok 3.
Usuwamy całą funkcję un_rander
Krok 4.
Dodaj na miejsce funkcji un_rander
public un_rander(task_id){
new id = task_id - TASK_FLASH_LIGHT
if(is_user_connected(id)){
if (player_class[id] == Ninja) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 15)
Display_Icon(id,0,"dmg_bio",255,0,0)
}
}
Efekt końcowy:
[...]
if ((get_user_team(id)!=get_user_team(index1)) && (index1!=0))
{
if ((index1!=54) && (is_user_connected(index1))) set_user_rendering(index1,kRenderFxGlowShell,flashlight_r,flashlight_g,flashlight_b,kRenderNormal,4)
remove_task(TASK_FLASH_LIGHT+index1);
set_task(7.5, "un_rander",TASK_FLASH_LIGHT+index1)
//set_task(15.0,"un_rander",TASK_NAME,index1)
if(player_class[index1] == Ninja)
{
message_begin(MSG_ONE,g_msg_statusicon,{0,0,0},index1)
write_byte(2)
write_string("dmg_bio")
write_byte(255)
write_byte(0)
write_byte(0)
message_end()
}
}
//Before freeze_ended check
if (((player_b_silent[id] > 0) || (player_class[id] == Zabojca)) && is_user_alive(id))
[...]
[...](0.5,"charge_hunter",attacker,parms,5)
public un_rander(task_id){
new id = task_id - TASK_FLASH_LIGHT
if(is_user_connected(id)){
if (player_class[id] == Ninja) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 15)
Display_Icon(id,0,"dmg_bio",255,0,0)
}
}
public client_PreThink ( id )
{
[...]
Ps. W efekcie końcowym dodałem kawałek kodu za dużo abyście zobaczyli w jakim miejscu i ile klamer ma mieć dokładnie funkcja
Jeżeli wpadła jakaś literówka lub jakiś byczek to proszę o poprawienie
Użytkownik Goliath edytował ten post 25.10.2011 16:45
TaKieCos
08.07.2010
Mogłbys napisac jak zrobic Znaczek widoczności ninji bez punktu 1? czyli ze automatycznie znika bez zmieniania broni
DioW
08.07.2010
Właśnie tak jest! Poto to zrobiłem!
08 lipiec 2010 - 20:08:
Napisałem rozwiązaniem tych problemów a nie z tymi problemami
Użytkownik DioW edytował ten post 29.09.2011 18:12
08 lipiec 2010 - 20:08:
Napisałem rozwiązaniem tych problemów a nie z tymi problemami

Użytkownik DioW edytował ten post 29.09.2011 18:12
STRAZAK
25.07.2010
Nie rozumiem jak usunąć funkcję? Nie znam się na tym.
z un_rander mam to:
z un_rander mam to:
public un_rander(task_id) { new id = task_id - TASK_FLASH_LIGHT if(is_user_connected(id)) set_renderchange(id) } public client_PreThink ( id ) { new button2 = get_user_button(id); if(flashlight[id] && flashbattery[id] && (get_cvar_num("flashlight_custom")) && (player_class[id] == Mag)) { new num1, num2, num3 num1=random_num(0,2) num2=random_num(-1,1) num3=random_num(-1,1) flashlight_r+=1+num1 if (flashlight_r>250) flashlight_r-=245 flashlight_g+=1+num2 if (flashlight_g>250) flashlight_g-=245 flashlight_b+=-1+num3 if (flashlight_b<5) flashlight_b+=240 new origin[3]; get_user_origin(id,origin,3); message_begin(MSG_BROADCAST,SVC_TEMPENTITY); write_byte(27); // TE_DLIGHT write_coord(origin[0]); // X write_coord(origin[1]); // Y write_coord(origin[2]); // Z write_byte(get_cvar_num("flashlight_radius")); // radius write_byte(flashlight_r); // R write_byte(flashlight_g); // G write_byte(flashlight_b); // B write_byte(1); // life write_byte(get_cvar_num("flashlight_decay")); // decay rate message_end(); new index1, bodypart1 get_user_aiming(id,index1,bodypart1) if ((get_user_team(id)!=get_user_team(index1)) && (index1!=0)) { if ((index1!=54) && (is_user_connected(index1))) set_user_rendering(index1,kRenderFxGlowShell,flashlight_r,flashlight_g,flashlight_b,kRenderNormal,4) remove_task(TASK_FLASH_LIGHT+index1); set_task(7.5, "un_rander",TASK_FLASH_LIGHT+index1) //set_task(15.0,"un_rander",TASK_NAME,index1) } }
Onyke
26.07.2010
Usun to
public un_rander(task_id)
{
new id = task_id - TASK_FLASH_LIGHT
if(is_user_connected(id)) set_renderchange(id)
}
szczepaneto
07.08.2010
jest jedno ale można naświetlać osoby z swojej drużyny jak to naprawić ??
07 sierpień 2010 - 11:22:
a i czy dało by rade zrobić żeby znaczek się pojawiał każdej osobie
07 sierpień 2010 - 11:37:
ok sory już znalazłem błąd
Użytkownik szczepaneto edytował ten post 07.08.2010 11:37
07 sierpień 2010 - 11:22:
a i czy dało by rade zrobić żeby znaczek się pojawiał każdej osobie
07 sierpień 2010 - 11:37:
ok sory już znalazłem błąd
Użytkownik szczepaneto edytował ten post 07.08.2010 11:37
Pawlo^^
11.10.2010
Edit: Zrobiłem wszystko tak jak powinno być, sprawdzałem linijkę po linijce, klamry się zgadzają,przekopmilowałem poprawnie, wrzuciłem na serwer jednak nic nie działa, ninja nadal jest widoczna, nie ma tego znaczka. Po prostu jest bez zmian.Oczywiście restart serwera był. Nie wiem co robić, proszę o pomoc, nagradzam reputacją. Z góry dziękuję.
Poniżej zamieszczam plik sma, proszę o sprawdzenie go czy wszystko jest dobrze.
Użytkownik Pawlo^^ edytował ten post 12.10.2010 15:44
Poniżej zamieszczam plik sma, proszę o sprawdzenie go czy wszystko jest dobrze.
Załączone pliki
Użytkownik Pawlo^^ edytował ten post 12.10.2010 15:44
sebul
01.11.2010
A ja bym to zrobił inaczej, zamiast
dodał
i zamiast
dodał
I dzięki temu każdy kto zostanie naświetlony będzie miał ten znaczek (migający).
Też dziwna sprawa, że samo "set_renderchange(id)" nie wystarcza... to chyba jest coś związane z
co znajduje się w tym "set_renderchange(id)".
Użytkownik sebul edytował ten post 01.11.2010 19:16
if(player_class[index1] == Ninja)
{
message_begin(MSG_ONE,g_msg_statusicon,{0,0,0},index1)
write_byte(2)
write_string("dmg_bio")
write_byte(255)
write_byte(0)
write_byte(0)
message_end()
}
dodał
if(is_user_alive(index1)) {
message_begin(MSG_ONE,g_msg_statusicon,{0,0,0},index1)
write_byte(2)
write_string("dmg_bio")
write_byte(200)
write_byte(100)
write_byte(0)
message_end()
}
i zamiast
public un_rander(task_id) {
new id = task_id - TASK_FLASH_LIGHT
if(is_user_connected(id)) {
if(player_class[id] == Ninja) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 15)
Display_Icon(id,0,"dmg_bio",255,0,0)
}
}
dodał
public un_rander(task_id) {
new id = task_id - TASK_FLASH_LIGHT
if(is_user_connected(id)) {
if(player_class[id] == Ninja) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 15)
// inne klasy
Display_Icon(id, 0, "dmg_bio", 100, 200, 0);
}
}
I dzięki temu każdy kto zostanie naświetlony będzie miał ten znaczek (migający).
Też dziwna sprawa, że samo "set_renderchange(id)" nie wystarcza... to chyba jest coś związane z
if(!task_exists(id+TASK_FLASH_LIGHT))
co znajduje się w tym "set_renderchange(id)".
Użytkownik sebul edytował ten post 01.11.2010 19:16
wreki
07.11.2010
robię wszystko tak jak autor tematu napisał i mam dwa błędy przy kompilowaniu
diablo.sma(1638) : error 017: undefined symbol "Ninja" diablo.sma(1684) : error 017: undefined symbol "Ninja" 2 Errors. Could not locate output file diablo-pulpido.amxx (compile failed).
sebul
22.12.2010
Jest lepsze rozwiązanie
Można dodać nową tablicę i wtedy według niej sprawdzać, czy gracz jest naświetlony, czy też nie. Może poradnik napiszę od początku, czyli od kodu taki jaki jest w 5.9l.
Chyba nie zapomniałem o niczym. Teraz nie trzeba będzie wypisywać po dwa razy tej samej klasy, żeby stawała się niewidzialna.
Użytkownik sebul edytował ten post 03.06.2011 11:22

Spoiler
Chyba nie zapomniałem o niczym. Teraz nie trzeba będzie wypisywać po dwa razy tej samej klasy, żeby stawała się niewidzialna.
Użytkownik sebul edytował ten post 03.06.2011 11:22
sebul
16.02.2011
A patrz u mnie nic nie wywala... Może źle coś dodałeś, bo przed chwilą jeszcze raz sprawdziłem czy dobrze wszystko napisałem i nie zauważyłem jakichś błędów.
sebul
17.02.2011
Przed chwilą dodałem to do standardowego diablo, wszystko po kolei tak jak w moim tutku i jakoś 0 błędów... Więc zero pytań mam co do tych rzekomych błędów...
Użytkownik sebul edytował ten post 17.02.2011 23:44
Użytkownik sebul edytował ten post 17.02.2011 23:44
cesik
17.02.2011
To tak 1 sposob mi niedziala niewiem czemu? 
Sposób sebola mi dziala tylko jest 1 ostrzezenie o spacji czy tabulatorze
i w:
Użytkownik cesik edytował ten post 18.02.2011 00:22

Sposób sebola mi dziala tylko jest 1 ostrzezenie o spacji czy tabulatorze

i w:
naswietlony[i] = 0;jesli ma sie tj. u mnie umiejetnosc odradzania dla jakiejs klasy trzeba ; usunac
Użytkownik cesik edytował ten post 18.02.2011 00:22
OverShot
23.01.2014
Sebul niestety nie działa
get_user_aiming(id, index1, bodypart1); if(is_user_alive(index1)) { if(index1 != 54 && get_user_team(id) != get_user_team(index1) && pev(index1, pev_renderamt) < 220) { naswietlony[index1] = 1; set_renderchange(index1); Display_Icon(index1, ICON_FLASH, "dmg_bio", 200, 100, 0); if(task_exists(index1+TASK_FLASH_LIGHT)) remove_task(index1+TASK_FLASH_LIGHT); set_task(7.5, "un_rander", index1+TASK_FLASH_LIGHT); } }