strigimas
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: strigimas
Ta prasme užstringa ir konsolė nereaguoja į komandas ir nieko nerašo? Amžinas ciklas susidarė.
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: strigimas
for, while, switch sitie ciklai ar kurie? beje taip kartais būna tada kai paleidžiu serverį, net nespėjus viskam užsikrautiaaarnas wrote:Ta prasme užstringa ir konsolė nereaguoja į komandas ir nieko nerašo? Amžinas ciklas susidarė.
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: strigimas
for ir whiel. Switch yra sąlyga.
Paleidus serverį kartais būna, kad luktelt reikia, bet žiūrint kaip užstringa.
Paleidus serverį kartais būna, kad luktelt reikia, bet žiūrint kaip užstringa.
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: strigimas
o for ciklai gali būti bet kokia kad ir for(new i = 0; i < num; i++) ar pvz kai modelius precachina su new models[][] = { "...", ".." }aaarnas wrote:for ir whiel. Switch yra sąlyga.
Paleidus serverį kartais būna, kad luktelt reikia, bet žiūrint kaip užstringa.
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: strigimas
Su for ciklu sudėtinga, nes dažniausia i daromas 0 arba 1 ir sąlyga, kad jis mažesnis už kažką. While didesnė tikimybė, nes ten tik sąlyga. Amžinas ciklas susidaro, kai įvyksta cikle kažkas, apie ką nepagalvojai ir pradedama skaičiuoti į kitą pusę nei to reikia.
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: strigimas
aaarnas wrote:Su for ciklu sudėtinga, nes dažniausia i daromas 0 arba 1 ir sąlyga, kad jis mažesnis už kažką. While didesnė tikimybė, nes ten tik sąlyga. Amžinas ciklas susidaro, kai įvyksta cikle kažkas, apie ką nepagalvojai ir pradedama skaičiuoti į kitą pusę nei to reikia.
Code: Select all
while((pos <= sizeof(g_Buttons)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch"))) { pev(ent[0], pev_origin, origin) while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, CELL_RADIUS))) { if(!is_valid_ent(ent[1])) continue entity_get_string(ent[1], EV_SZ_classname, info, charsmax(info)) if(!equal(info, "func_door")) continue entity_get_string(ent[1], EV_SZ_targetname, info, charsmax(info)) if(!info[0]) continue if(TrieKeyExists(g_CellManagers, info)) { TrieGetCell(g_CellManagers, info, ent[2]) } else { ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", info) } if(is_valid_ent(ent[2]) && (in_array(ent[2], g_Buttons, sizeof(g_Buttons)) < 0)) { g_Buttons[pos] = ent[2] pos++ break } } }
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: strigimas
Pavyzdys kaip patikrinti + apsaugoti nuo užstrigimo:
Code: Select all
new temp while(1<4) { if(++temp > 10000) { log_amx("Ciklas while(1<4) uzstrigo") break; } }
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: strigimas
Code: Select all
L 05/02/2011 - 16:20:28: [.amxx] uzstrigo setup_buttonsL 05/02/2011 - 16:20:28: [.amxx] uzstrigo setup_buttons2
Kodas:
Code: Select all
public setup_buttons(){ new ent[3] new Float:origin[3] new info[32] new pos while((pos <= sizeof(g_Buttons)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch"))) { pev(ent[0], pev_origin, origin) while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, CELL_RADIUS))) { if(!is_valid_ent(ent[1])) continue entity_get_string(ent[1], EV_SZ_classname, info, charsmax(info)) if(!equal(info, "func_door")) continue entity_get_string(ent[1], EV_SZ_targetname, info, charsmax(info)) if(!info[0]) continue if(TrieKeyExists(g_CellManagers, info)) { TrieGetCell(g_CellManagers, info, ent[2]) } else { ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", info) } if(is_valid_ent(ent[2]) && (in_array(ent[2], g_Buttons, sizeof(g_Buttons)) < 0)) { g_Buttons[pos] = ent[2] pos++ break } log_amx("uzstrigo setup_buttons2") } log_amx("uzstrigo setup_buttons") } TrieDestroy(g_CellManagers)}
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: strigimas
Ne taip 
Va taip daryk.

Code: Select all
public setup_buttons(){ new ent[3] new Float:origin[3] new info[32] new pos new temp while((pos <= sizeof(g_Buttons)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch"))) { pev(ent[0], pev_origin, origin) while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, CELL_RADIUS))) { if(!is_valid_ent(ent[1])) continue entity_get_string(ent[1], EV_SZ_classname, info, charsmax(info)) if(!equal(info, "func_door")) continue entity_get_string(ent[1], EV_SZ_targetname, info, charsmax(info)) if(!info[0]) continue if(TrieKeyExists(g_CellManagers, info)) { TrieGetCell(g_CellManagers, info, ent[2]) } else { ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", info) } if(is_valid_ent(ent[2]) && (in_array(ent[2], g_Buttons, sizeof(g_Buttons)) < 0)) { g_Buttons[pos] = ent[2] pos++ break } } if(++temp > 10000) { log_amx("uzstrigo setup_buttons") break; } } TrieDestroy(g_CellManagers)}
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Who is online
Users browsing this forum: Google [Bot] and 4 guests