Problemów kilka.
Screeaam... 05.06.2010
Witam, mam pewien problem, mianowicie w DeathMsg mam tak:
Lecz gdy Diablo kogoś atakuje, to się serwer crashuje, dlaczego i jak temu zapobiec?
2. Jak zrobić leczenie klasie bez żadnych bugów na każdej broni?
3. Co w tym kodzie jest źle:
Owszem, przypisałem w prethinku, że gdy dana klasa wciśnie R na nożu, to wybuchnie, ale stoje koło wroga, ja wybucham i umieram a przeciwnikowi ani 1 dmg nie zabiera, dlaczego?
Edited by Screeaam..., 05.06.2010 23:55.
if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid)) { show_deadmessage(kid,vid,headshot,weaponname) award_item(kid,0) award_kill(kid,vid) add_respawn_bonus(vid) add_bonus_explode(vid) add_barbarian_bonus(kid) if (player_class[kid] == Barbarzynca || player_b_galthranbarba[kid] == 1) refill_ammo(kid) else if (player_class[kid] == Diablo || player_b_galthrandiablo[kid] == 1) fm_give_item(kid, "weapon_hegrenade") else if (player_class[kid] == Baal || player_b_galthranbaal[kid] == 1 && headshot == 1) fm_give_item(id, "weapon_hegrenade") fm_give_item(id, "weapon_flashbang") fm_give_item(id, "weapon_flashbang") fm_give_item(id, "weapon_smokegrenade") set_renderchange(kid) savexpcom(vid) }
Lecz gdy Diablo kogoś atakuje, to się serwer crashuje, dlaczego i jak temu zapobiec?
2. Jak zrobić leczenie klasie bez żadnych bugów na każdej broni?
3. Co w tym kodzie jest źle:
public add_bonus_explode2(id) { new origin[3] get_user_origin(id,origin) explode(origin,id,0) for(new a = 0; a < MAX; a++) { if (!is_user_connected(a) || !is_user_alive(a) || player_b_fireshield[a] != 0 || get_user_team(a) == get_user_team(id)) continue new origin1[3] get_user_origin(a,origin1) if(get_distance(origin,origin1) < player_b_explode[id] + player_intelligence[id]*2) { new dam = 50//-(p_stats[dex][a]*2) if(dam<1) dam=1 change_health(a,-dam,id,"c4") Display_Fade(id,2600,2600,0,255,0,0,15) } } }
Owszem, przypisałem w prethinku, że gdy dana klasa wciśnie R na nożu, to wybuchnie, ale stoje koło wroga, ja wybucham i umieram a przeciwnikowi ani 1 dmg nie zabiera, dlaczego?
Edited by Screeaam..., 05.06.2010 23:55.
Siemir
06.06.2010
1) Po sprawdzeniu Balla musisz dać klamrę na te 4 granaty oraz zmienić z id na kid.
2) Zrobić set_task z czasem co jaki się ma leczyć, a w funkcji dać pętle sprawdzającą klasy i ewentualnie dającą hp.
3) Oprócz wywołania funkcji musisz nadać jakąś wartość zmiennej player_b_explode.
2) Zrobić set_task z czasem co jaki się ma leczyć, a w funkcji dać pętle sprawdzającą klasy i ewentualnie dającą hp.
3) Oprócz wywołania funkcji musisz nadać jakąś wartość zmiennej player_b_explode.
Screeaam... 06.06.2010
1) Po sprawdzeniu Balla musisz dać klamrę na te 4 granaty oraz zmienić z id na kid.
2) Zrobić set_task z czasem co jaki się ma leczyć, a w funkcji dać pętle sprawdzającą klasy i ewentualnie dającą hp.
3) Oprócz wywołania funkcji musisz nadać jakąś wartość zmiennej player_b_explode.
1) Ok, ale czemu Diablo nie dostawał granatów?
2) Napisałbyś jaśniej jak?
3) W którym miejscu?
Siemir
06.06.2010
1) Ale skąd to wiesz jak się serwer sypał?
2) W plugin_init dajesz
3) Tam gdzie dodałeś wywołanie funkcji add_bonus_explode2, np.
Edited by Siemir, 06.06.2010 13:59.
2) W plugin_init dajesz
set_task(x.0, "heal", 0, "", 0, "b")za x podstawiasz co jaki czas ma leczyć, i gdzieś dajesz
public heal() { new players[32], count, player, i get_players(players, count, "ah") for(i=0;i<count;i++) { player = players[i] if(player_class[player] != klasa) continue change_health(player, y, 0, "") } }za 'y' dając ilość hp
3) Tam gdzie dodałeś wywołanie funkcji add_bonus_explode2, np.
if(costam) { add_bonus_explode2(id); player_b_explode[id] = 250; }
Edited by Siemir, 06.06.2010 13:59.
Screeaam... 06.06.2010
1) Ale skąd to wiesz jak się serwer sypał?
Bo Diablo jak zabił to nie dostał, a Baal crashuje serwer.
Siemir
06.06.2010
Dlatego miałeś dać klamry, bez klamry to po if'ie wykonuje tylko jedną instrukcję reszte niezależnie od warunku. Jak dasz
else if (player_class[kid] == Baal || player_b_galthranbaal[kid] == 1 && headshot == 1) { fm_give_item(kid, "weapon_hegrenade") fm_give_item(kid, "weapon_flashbang") fm_give_item(kid, "weapon_flashbang") fm_give_item(kid, "weapon_smokegrenade") }to powinno działać.
Screeaam... 06.06.2010
Mam tak:
Baal crashuje nadal, Diablo nie dostaje.
if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid)) { show_deadmessage(kid,vid,headshot,weaponname) award_item(kid,0) award_kill(kid,vid) add_respawn_bonus(vid) add_bonus_explode(vid) add_barbarian_bonus(kid) if (player_class[kid] == Barbarzynca || player_b_galthranbarba[kid] == 1) refill_ammo(kid) else if (player_class[kid] == Diablo || player_b_galthrandiablo[kid] == 1) fm_give_item(kid, "weapon_hegrenade") else if (player_class[kid] == Baal || player_b_galthranbaal[kid] == 1 && headshot == 1){ fm_give_item(kid, "weapon_hegrenade") fm_give_item(kid, "weapon_flashbang") fm_give_item(kid, "weapon_flashbang") fm_give_item(kid, "weapon_smokegrenade") } set_renderchange(kid) savexpcom(vid) }
Baal crashuje nadal, Diablo nie dostaje.
Siemir
06.06.2010
Sprawdziłem u siebie i faktycznie granaty daje jak mu sie podoba z naciskiem na ich nie dawanie. U mnie żadnych crashy nie było więc to na pewno nie ta część kodu. Natomiast rozwiązanie z granatami zrobiłem dziwne, ale jak coś możesz i innym klasom dać granaty .
Zamiast
Zamiast
else if (player_class[kid] == Diablo || player_b_galthrandiablo[kid] == 1) fm_give_item(kid, "weapon_hegrenade") else if (player_class[kid] == Baal || player_b_galthranbaal[kid] == 1 && headshot == 1){ fm_give_item(kid, "weapon_hegrenade") fm_give_item(kid, "weapon_flashbang") fm_give_item(kid, "weapon_flashbang") fm_give_item(kid, "weapon_smokegrenade") }daj
new param[2] param[0]=kid param[1]=headshot set_task(0.1, "granaty", kid+5000, param, 2)a w kodzie wklej gdzieś
public granaty(param[]) { new id = param[0] if(player_class[id] == Diablo || player_b_galthrandiablo[id]) { fm_give_item(id, "weapon_hegrenade") } else if((player_class[id] == Baal || player_b_galthranbaal[id]) && param[1]) { fm_give_item(id, "weapon_hegrenade") fm_give_item(id, "weapon_flashbang") fm_give_item(id, "weapon_flashbang") fm_give_item(id, "weapon_smokegrenade") } }
Screeaam... 07.06.2010
Dobra, granaty działają, teraz problem, bo ja wybucham, to dalej dmg nie zadaje, mam tak:
Prethink:
Koniec sma:
Prethink:
if(player_class[id] == Duriel && on_knife[id] && (button2 & IN_RELOAD)) { add_bonus_explode2(id) player_b_explode[id] = 250; UTIL_Kill(id,id,"grenade") }
Koniec sma:
public add_bonus_explode2(id) { new origin[3] get_user_origin(id,origin) explode(origin,id,0) for(new a = 0; a < MAX; a++) { if (!is_user_connected(a) || !is_user_alive(a) || player_b_fireshield[a] != 0 || get_user_team(a) == get_user_team(id)) continue new origin1[3] get_user_origin(a,origin1) if(get_distance(origin,origin1) < player_b_explode[id] + player_intelligence[id]*2) { new dam = 50//-(p_stats[dex][a]*2) if(dam<1) dam=1 change_health(a,-dam,id,"c4") Display_Fade(id,2600,2600,0,255,0,0,15) } } }
Siemir
07.06.2010
Wywołujesz funkcję zanim ustawisz zmienną.
if(player_class[id] == Duriel && on_knife[id] && (button2 & IN_RELOAD)) { player_b_explode[id] = 250; add_bonus_explode2(id UTIL_Kill(id,id,"grenade") }