Naprednije skripte
za Hamster
Većina skripti koje sam pisao bile su za moje potrebe, ali sam izdvojio par procedura koje mogu poslužiti i drugima, sto za koriscenje, što za ucenje...Pošto sam često menjao servere, dodao ih na listu za korišćenje i privremeno prekidao da ih koristim, a nisam želeo da ih izbrisem iz Hamstera, mislim da sam našao najjednostavnije rešenje za to, bez mnogo menjanja skripti... U proceduri ispod, skripta uzima servere iz hamster.ini koji se nalaze na Online-meniju, i imaju svoj redni broj i onda skida odgovarajuće grupe sa njih...
Dakle u Configuration > General Settings > Online menu, pod rednim brojem, recimo 1 odredimo koje servere želimo da proveravamo... Nakon toga sledeća procedura obavlja ostalo:
################################################
# Univerzalna procedura za proveru vise
# servera i samo odredjenih grupa
# Objasnjenje:
# $RedniBrNaMeniju - Redni broj spiska servera na Online-meniju
# $Grupe - Regex za izbor grupa koje treba proveriti
#
# Skriptu napisao: ANT-ilic (modifikovati po potrebi)
################################################
Sub ProveriServer_Grupe ( $RedniBrNaMeniju, $Grupe )
Var ( $spisakservera, $List, $i, $end, $begin, $lenstr, $savestr )
$spisakservera = IniRead( "Hamster.ini", "Online-Menu", "Server"+$number, "News.CIS.DFN.DE,nntp")
#"News.CIS.DFN.DE,nntp" je dafault vrednost, za slucaj da nema nijednog servera pod tim brojem u Online-meniju
$end = 1
$Begin = 0
$i = 0
# Pravimo novu listu stringova
$list = ListAlloc
# Izvlacimo pojedinacne servere
While ( $end > 0 )
# Gde je kraj servera ";", u stringu '$spisakservera', pocni pretragu od znaka sa rednim brojem '$begin'
$end = pos( ";", $spisakservera, $Begin )
# Ako je pronadjen, dodati u listu
If ( $end > 0 )
# odsecamo nepotreban deo ',nntp' iz imena servera
$LenStr = $end - $begin - 5
# server koji dodajemo: iz $spisakservera, od pozicije $begin, duzine $lenstr
$SaveStr = copy( $spisakservera, $begin , $lenstr )
# Dodatna provera greske
If ( $SaveStr <> "" )
# Dodajemo server
ListSet( $list, $i, $SaveStr )
# povecavamo brojac
Inc ( $i )
endif
EndIf
# Povecavamo poziciju od koje trazimo sledeci server
$begin = $end + 1
EndWhile
#Ucitavamo listu servera i pripremamo za preuzimanje
$i = 0
while( $i < ListCount($list) )
# print je tu samo zbog debug-a
print( $i, ": ", ListGet($list,$i) )
# HamNewsJobsPull ( server, regex kojim biramo grupe )
HamNewsJobsPull ( ListGet ( $list, $i ) , $regex )
inc( $i )
endwhile
ListFree( $list )
endsub #################################################
Meni za pozivanje skripti/naredbi
Pomoću ovakvih skripti je moguće pokretati više različitih skripti, kombinovati skripte i sve to zadržati na jednom mestu... Takodje je moguće realizovati i podmenije i sl. ali to ostavljam na vama da sami kreirate...
#########################################################
# Skripta: Meni.hsc
#
# Skriptu napisao: ANT-ilic (modifikovati po potrebi)
#########################################################
#!hs2
GlavniMeni
quit
Sub GlavniMeni # Glavni meni
var( $menulist, $selindex )
$menulist = ListAlloc
ListAdd( $menulist, "Minimiziraj i zatvori meni")
ListAdd( $menulist, "Provajder 1")
ListAdd( $menulist, "Provajder 1 Lite")
ListAdd( $menulist, "Provajder 2")
# Moze se dodati do desetak i da meni ostane pregledan
$selindex = ListBox( $menulist, "Select what you wanna do..." )
icase( $selindex, _
0, MinClose(), _
1, RunScript ("1provmin.hsc"), _
# Opis: RunScript ("ime skripte", "parametri", "nastavi izvrsavanje skripte"
# poslednje je False, jer zelimo da se saceka do kraja izvrsenja
# skripte 1provauto, pa tek onda da se ponovo prikaze meni
2, RunScript ("1provauto.hsc", "", False), _
3, Procedura1(), _
4, , _
5, , _
6, ,_
7, , _
8, , _
9, , _
#else, Print ("Hellooo! We have a problem!") _
else, Break _
)
ListFree( $menulist )
# Ako nema prve stavke Minimiziraj i zatvori... onda treba da bude '>='
# If ($selindex >= 0 )
If ($selindex > 0 )
GlavniMeni
endif
EndSub ###################### End Main #################
Sub MinClose()
# Minimaze
HamMessage (6,0)
# Kill menu
$selindex=0
EndSub
Sub Procedura1
# Ovde navesti vise naredbi koje treba izvrsiti, pozvati skripte itd.
EndSub