עמוד ראשי מירק סקריפטינג מדריכים [מדריך] קבלת מידע מדיאלוגים

[מדריך] קבלת מידע מדיאלוגים

mIRC Guides - בפורום זה יפורסמו מדריכים לשפת המירק, הסברת פקודות ואפשרויות במירק וגם הסברים לשימוש בתוכניות חיצוניות לטובת המירק. לפרסום מדריכים יש לפרסמם תחילה בפורום "פרסום קודים ומדריכים" ולאחר מכאן הם יועברו לפורום זה.

הצטרף: 24 דצמבר 2010, 13:54
הודעות: 6
פורסם: 26 דצמבר 2010, 14:20
מבוא
בתור התחלה,
המדריך יעסוק כמעט על כל מה שקשור בקבלת מידע מדיאלוגים הכולל איבנטים מזהים ופקודות. בחרתי לנכון לכתוב את המדריך עקב חוסר במדריכים מסוג זה
ולכן ואני מקווה שתגלו עניין בנושא והוא יועיל לכם :arrow:
אני יודע שייתכן ולא תבינו מספר דברים, לכן אני פה ותוכלו לשאול בתגובות.
השקעתי במדריך הזה כל מה שיכלתי כך שניסיתי לפרט על כל נושא כמה שיותר הרבה ועם דוגמאות רבות כדי למנוע אי הבנות מיותרות.
מה שנשאר לי זה לאחל קריאה מהנה, מאתגרת ומושכת! :)

מה בעצם יהיה במדריך?

טוב אז ככה, המדריך הבא יעסוק בקבלת מידע מדיאלוגים כלומר נלמד על מספר גורמים שיסייעו לנו לקבל מידע מדיאלוגים והם-
1. הפקודה /dialog.
2. המזהה $dialog.
3. הפקודה did וכל הפרמטרים.
4. המזהה $did וכיצד להשתמש בו.
5. המזהה $didwm ושימושו.
6. המזהה $didreg ושימושו.
7. המזהה $didtok ושימושו.
8. הפקודה /didtok.
9. האיבנט שמשתמשים כדי לגרום לדיאלוג לפעול (on dialog)

אז נתחיל:

1. /dialog
הפקודה מאפשרת לך להכין דגמי דיאלוג ובעצם "לכוון" אותו בעזרת הסוויץ' m-.
בעזרת הפקודה תוכלו להציג את הדיאלוג על המסך או על חלון בנפרד, ובנוסף לשנות את הגדרותיו שהיו כברירת מחדל כמו; שינוי כותרת, שינוי גודל ומיקום, ועוד...


הפורמט:
 /dialog -mdtsonkcvie name [table] [x y w h] [text]


כפי שראיתם יש מספר פרמטרים שבעזרתם יהיה ניתן לשנות את הגדרותיו של הדיאלוג ועוד.
name - נציב במקומו את שם הדיאלוג שיצרנו.
[table] - שם הטבלה שיצרנו בדיאלוג.
name ו [table] נחשבים לפרמטרים זהים ולכן נוכל להציב את שם הדיאלוג גם בשם הטבלה
ב [table]

ישנם כמה פרמטרים שיבואו לידי ביטוי רק כאשר הם ביחד עם הפרמטר ההכרחי (m-) והם:
a-
d-
o/n-
כלומר:

/dialog -m[a/d/o/n] name name


להלן פירוט מלא על כל אחד מן הפרמטרים הנ"ל;

m-
הפרמטר ההכרחי בדיאלוג,
פותח את הדיאלוג ומציג אותו בחלון הנוכחי בעזרת הפקודה -

/dialog -m name name


כמובן שב name נציב את שם הדיאלוג.

a-
הסוויץ' יבוא ביחד עם הסוויץ' הקודם (m-).
הסוויץ' משמש בכך שיהיה החלון האקטיבי כלומר שהדיאלוג יהיה כחלון הנוכחי הפעיל.

/dialog -ma name name


d-
הסוויץ' יבוא תמיד ביחד עם m-.
הסוויץ' יפתח את הדיאלוג על שולחן העבודה כלומר כחלון נפרד ויהיה ניתן למזערו.

/dialog -md name name


o-
פרמטר זה יבוא ביחד עם הפרמטר m-.
קובע את הדיאלוג כחלון הראשון מבין כל החלונות הפתוחים ושיפתחו.
כלומר, אפילו כל דיאלוג שייפתח, תמיד הוא ייקבע כראשון מעל הכל.

/dialog -mo name name


n-
פרמטר זה יבוא ביחד עם הפרמטר m-.
פקודה הפוכה לקודמת, בעזרת הסוויץ' הוא יינטרל את האפשרות הקודמת שבו הוא יהיה הראשון מבין כל החלונות וכעת הוא יהיה דיאלוג כשאר הדיאלוגים.

/dialog -mn name name


ישנם פרמטרים נוספים אשר משתמשים בהם כאשר הדיאלוג נמצא בשימוש ללא הפרמטר m-.
פרמטרים אלה משמשים לסגירת הדיאלוג, שינוי גודל ומיקום, שינוי כותרת, ועוד..

להלן פירוט מלא לפרמטרים הנ"ל;

x-
סוגר את הדיאלוג ולא יבצע שום איבנט בעת סגירתו.
כלומר, אם היה איבנט שברגע שהדיאלוג ייסגר הוא יעשה כך וכך, האיבנט לא יתקיים כאשר נשתמש בפקודה זו.

/dialog -x name name


h-
הדיאלוג יעבוד עם חיבור הסרבר האקטיבי (הפעיל).

/dialog -h name name


t-
קובע את כותרת הדיאלוג רק כאשר הדיאלוג פתוח!

/dialog -t name text


הפעם מציבים פעם אחת את שם הדיאלוג ובפרמטר השני מציבים את הטקסט של הטופיק שבחרתם.

s-
קובע את מיקומו או את גודלו של הדיאלוג, גם הפעם הפקודה תעבוד רק כאשר הדיאלוג פתוח!

/dialog -s name x y w h


r-
מציב את הדיאלוג במרכז המירק.

/dialog -r name name


bp-

בתור התחלה,
-b = dbu

למתנסים שבינינו, אופציית ה dbu מוכרת לנו בטבלת הדיאלוג;
...
size x y w h
option dbu
..


-p = pixels

גם כאן האופצייה מופיעה בטבלת הדיאלוג;
 
...
size x y w h
option pixels
..


חשוב לציין!
משתמשים בכל סוויץ בנפרד, כלומר או b- או p-.
כל אחד מהם יבוא ביחד עם הסוויץ' s-.

לסיכום,
כל אחד מסוויצ'ים אלה משנה את מיקומו של הדיאלוג או את גודלו ותמיד יבוא עם הסוויץ' s-.
הם יגרמו לדיאלוג לשנות את ההגדרות ומומלץ להשתמש בdbu כי הוא קיים ברוב המערכות אך זה כבר הבחירה שלכם.

k-
לוחץ על כפתור ok (אישור) וסוגר את הדיאלוג.

/dialog -k name name


c-
לוחץ על כפתור cancel (ביטול) ויסגור את הדיאלוג.

/dialog -c name name


v-
יגרום לדיאלוג להיות החלון האקטיבי והנוכחי.

/dialog -v name name


ie-
אם הדיאלוג נפתח ע"י הסוויץ' md- כלומר על שולחן העבודה, פקודה זו תגרום למזעור הדיאלוג.

/dialog -ie name name


2. המזהה $dialog
בדומה לפקודה /dialog, שבה הוא יוצר דגמי דיאלוג כלומר בעזרת המזהה נוכל לפתוח את הדיאלוג בדרכים שונות הבאים לידי ביטוי במיקום ועוד ..
בטח אתם שואלים את עצמכם איך זה שמזהה לא מחזיר ערך אלא מבצע פקודה ?
מזהה זה שונה מכל השאר,
מצד אחד, הוא עובד על עקרונו של הפקודה /dialog ופרמטריו יוסברו בהמשך.
מצד שני, הוא מחזיר האם הדיאלוג כעת בשימוש והאם הוא פתוח.
בנוסף לכל, המזהה מאפשר לנו לפתוח דיאלוג שברגע שהוא נפתח לא נוכל להשתמש בשאר החלונות כלומר הוא יהיה החלון היחידי שנוכל להשתמש בו עד שייסגר.

כיצד נוכל לעבוד עם המזהה ?

דרך א'
נוכל להשתמש במזהה דרך משתנים כמו:

%result = $dialog(name,table[,parent])


כאשר נציב ב name את שם הדיאלוג שאנו נרצה לבצע עליו את הפקודה.
table - שם הטבלה.
* נהוג לרשום את שם הדיאלוג שנית כך ש table = name

בפרמטר parent נוכל להציב מס' אפשרויות שהם:

- נוכל להציב חלון ווינדו מסויים (@window)

- נוכל להציב (1-) האומר לדיאלוג להיפתח בחלון נפרד חדש, בדומה לסוויץ' -md בפקודה /dialog.

- נוכל להציב (2-) האומר לדיאלוג להיות מעל לכל החלונות כלומר החלון הראשי, בדומה לסוויץ' -o בפקודה /dialog.

- נוכל להציב (3-) האומר שהדיאלוג יהיה החלון האקטיבי מבין שאר החלונות, בדומה לסוויץ' -ma בפקודה /dialog.

- נוכל להציב (4-) האומר שהדיאלוג יהיה החלון האקטיבי מבין שאר הדיאלוגים, אם אין שום דיאלוג פתוח הפרמטר ייחשב כ (3-).

דוגמא:
//var %a = $dialog(name,name,-1)


כפי שציינתי, ב name נציב את שם הדיאלוג.
פקודה זו תגרום לדיאלוג להיפתח כך שהוא יהיה בחלון ווינדו חדש ונפרד.
בנוסף, הדיאלוג יהיה היחידי הניתן לשימוש מבין שאר הדיאלוגים.

נקודות חשובות:

* חשוב לציין שלא נוכל להשתמש בסוג זה של המזהה באיבנטים וברימוט עצמו.

* כאשר נפתח דיאלוג בעזרת הפרמטרים הנ"ל לא נוכל להשתמש באף חלון אחר כלומר החלון של הדיאלוג יהיה החלון היחידי הניתן לשימוש עד לסגירתו.

דרך ב'
ניתן להשתמש במזהה להחזרת מידע.
אם אנו רוצים לדעת אם דיאלוג x פתוח כעת ונמצא בשימוש נעשה בעזרת המזהה.
ואם אנו רוצים לדעת כמה דיאלוגים פתוחים במירק אנו ניעזר גם במזהה.

הפורמט של דרך זו הוא:

$dialog(name/N)


כפי שאנו יודעים, name מציין את שם הדיאלוג.
אם אנו רוצים לדעת אם דיאלוג מסויים קיים אנו נרשום רק את שם הדיאלוג שאנו נרצה לבדוק.
למשל:
//echo -a $iif($dialog(name),$true,$false)


הפקודה הבאה אומרת; אם הדיאלוג 'name' קיים, הוא ירשום באקו $true.
אם לא, $false.

כפי ששמתם לב, צויין בפורמט הפרמטר N.
אם N = 0 הוא יחזיר את מס' הדיאלוגים הפתוחים במירק.
אם נציב במקום N מספר כלשהו, הוא יחזיר את אותו מס' דיאלוג הפתוח ברגע זה.

לדוגמא:
נניח ופתוחים לי שלושה דיאלוגים,
אחד, Away System.
השני, Auto Connect.
והשלישי, Info-Line.

אם אני ארצה לדעת כמה דיאלוגים פתוחים כרגע אני ארשום:
//echo -a $dialog(0)


אם אני ארצה לדעת את השם של כל דיאלוג אני ארשום:
//echo -a $dialog(1)


במקרה שלנו, כפי שציינתי למעלה הדיאלוג הראשון שפתוח הוא Away System ולכן כנרשום את הפקודה הנ"ל הוא יחזיר את שם הדיאלוג הראשון שפתוח במירק.

למזהה מס' פרמטרים שנוכל להשתמש בהם רק כאשר הדיאלוג פתוח :

x,y,w,h - מחזיר את הגודל והמיקום של הדיאלוג.
דוגמא:
//echo -a $dialog(name).x


בדוגמא זו, יחזיר את המיקום של הדיאלוג ביחס למירק.

cw,ch - מחזיר את הרוחב והאורך של שטח הדיאלוג.

title - מחזיר את כותרת הדיאלוג.

modal - פרמטר זה בודק אם הדיאלוג נפתח בעזרת מודלי כפי שלמדנו כעת, כלומר בעזרת המזהה:
$dialog(name,name)


אשר מזהה זה "תוקע" את המירק כשהדיאלוג נפתח והוא החלון היחידי הניתן לשימוש.
אם הוא נפתח בעזרת המזהה - הוא יחזיר $true.
אם הוא נפתח בעזרת הפקודה:
/dialog -m name name

הוא יחזיר $false.

table - מחזיר את טבלת הדיאלוג כלומר את שם הדיאלוג. שימו לב, לא כותרת אלא השם!

ok - אם קיים בדיאלוג כפתור אישור (ok) הוא יחזיר את האיי די של אותו כפתור.

cancel - אם קיים בדיאלוג כפתור ביטול (cancel) הוא יחזיר את האיי די של אותו כפתור.

result - אם קיים כפתור result כפי שקבעתם בהגדרות של הדיאלוג, הוא יחזיר את האיי די של אותו כפתור.

focus - מחזיר את האיי די הנמצא בפוקוס באותו הרגע.

tab - מחזיר את האיי די של הטאב (tab) הפתוח והנוכחי בדיאלוג.

active - מחזיר $true אם אותו הדיאלוג הוא החלון האקטיבי (הנוכחי), אם לא - יחזיר $false.

hwnd -מחזיר את ה- הwindow handle של הדיאלוג,
כשווינדואז יוצרת אובייקט ויזואלי שבמקרה שלנו הוא דיאלוג אך במקרים אחרים יכול להיות חלון, היא יוצרת לו מספר שמזהה אותו ואפשר להשתמש בו כדי להתייחס אחר כך לאובייקט.

3. הפקודה /did
כשיצרנו את הדיאלוג שברצוננו לעבוד עליו, לעיתים אנו נרצה לשנות את התוכן המוצג, או לשנות את הטקסט שהיה, או לבצע על כפתורים מסויימים להיות כאפור ועוד..
אנו שואלים את עצמנו איך אפשר לעשות זאת?
כמובן שבעזרת הפקודה /did ובעזרת האיבנט on dialog שיפורט בהמשך המדריך.
כמו שאמרנו, בפקודה זו תוכלו לשנות טקסט של אדיט מסויים, לשנות את הטקסט הנמצא בכפתור, לשנות מצבים בכפתורים, למחוק שורות מהליסטבוקס, ועוד..

בתור התחלה, הפורמט של הפקודה הוא:

/did -ftebvhnmcukradiogj name id [n] [text | filename]


להלן כל הפרמטרים האפשריים שיש בפקודה;

f-
פרמטר זה קובע פוקוס על האיי די שאתם בוחרים. כלומר, פקודה זו תתמקד באיי די.
דוגמא:

//did -f dname id


לסיכום,
פקודה זו תגרום לאיי די להיראות כאילו הוא מסומן. אם האיי די הוא כפתור הוא יראה אותו מסומן ו"מוקף" קווים לא מושלמים. כמובן שניתן להתמקד לא רק באיי די של כפתור אלא על כל איי די ולא משנה מה הוא.

t-
פרמטר זה קובע את האיי די של הכפתור כאילו הוא לחוץ.
דוגמא:

//did -t dname id


לסיכום,
פקודה זו תגרום לכפתור להיראות מעין מסומן ומוקף בקו שלם כאילו הוא לחוץ. מי שעדיין לא הבין הפקודה 'תעשה' את הכפתור כאילו לחצת עליו.

e-

פרמטר זה יגרום לאיי די לחזור ממצב 'חסום' (בו הוא נראה בצבע אפור ולא ניתן ללחיצה/לעריכה) למצב נורמלי (בו הוא נראה רגיל וניתן ללחיצה/לעריכה).
דוגמא:

//did -e dname id


לסיכום,
פקודה זו "תשחרר" איי די ממצב שהוא מוסתר ונראה כאפור.

b-
פרמטר זה הוא בעצם פרמטר העושה פעולה הפוכה מהקודם.
במצב זה הוא מבטל את האיי די וגורם לו להיראות כאפור ולא ניתן ללחיצה/עריכה.
דוגמא:

//did -b dname id


לסיכום,
פקודה זו תעשה את אותו איי די מוסתר הכוונה שהוא ייראה כאפור ולא יהיה ניתן להשתמש בו.

v-
פרמטר זה מחזיר את האיי די שהיה 'בלתי נראה' או במילים אחרות - לא קיים.
דוגמא:

//did -v dname id


לסיכום,
אם אותו איי די כבר מוחבא וכאילו מחקתם אותו הפרמטר ידאג להחזיר לכם אותו.

h-
פרמטר זה הוא ההיפך מהקודם רק שהפעם הוא זה שמחביא או במילים אחרות,
"מעלים" את האיי די.
דוגמא:

//did -h dname id


לסיכום,
פקודה זו תחביא ותסתיר וכאילו תמחק את האיי די.

n-
פרמטר זה גורם לאיי שהוא אדיטבוקס להיות נורמלי ולא מוסתר.
דוגמא:

//did -n dname id


לסיכום,
פקודה זו תעשה את האדיט בוקס ממצב שבו הוא היה לא ניתן לעריכה (המסומן כאפור) למצב נורמלי (ניתן לעריכה).
בטח אתם שואלים את עצמכם "זה לא דומה לפרמטר e-"?
ובכן, זה די דומה אך פה מדובר על האיי די שהוא אדיטבוקס וגורם לו להיות ניתן לעריכה ממצב של פרמטר שהוא יוסבר בהמשך.

m-
פרמטר זה הוא ההיפך מהקודם, כלומר הוא מבטל את האדיטבוקס וגורם לו להיראות מוסתר.
דוגמא:

//did -m dname id


לסיכום,
פקודה הפוכה לקודמת רק שפה האדיט בוקס יהיה מוסתר וייראה כאפור אך ניתן לסימון.
ובטח גם כאן תעלה השאלה "זה לא דומה לפרמטר b-"?
ובכן, שוב זה דומה אך הפעם הוא לא יגרום לו להיות מוסתר ולא ניתן לסימון,
אלא הוא יגרום לאיי די להיות מוסתר ומסומן כצבע אפור אבל עדיין אפשר

לסמן אותו מבלי שיהיה ביפ.

c-
פרמטר זה מראה את ה-check או את ה- radio כאילו הוא מסומן ב'וי'.
דוגמא:

//did -c dname id


לסיכום,
פקודה זו תגרום איי די של רדיו או צ'אק להיות מסומן ב"וי".

u-
פרמטר זה הוא ההיפך מהפרמטר הקודם רק שפה ממצב שבו הוא נמצא כמסומן ב'וי' להיות ללא 'וי' כלומר הוא מבטל את ה-check או את ה-

radio.
דוגמא:

//did -u dname id


לסיכום,
כאשר תעשו פקודה זו הרדיו יבוטל ולא יהיה מסומן.

k-
פרמטר זה בא יחד עם הפרמטרים c- / -u.
הפרמטר משאיר את הבחירות הקודמות בליסט בוקס בלבד!

r-
פרמטר זה די ידוע והוא פשוט 'מנקה' ובמילים אחרות, מוחק את כל הטקסט שיש באיי די.
דוגמא:

//did -r dname id


לסיכום,
פקודה זו תנקה את החלון ואת מה שרשום באיי די.

a-
פרמטר זה מוסיף עוד שורה לסוף של הטקסט הקיים.
דוגמא:
נניח היה בטקסט hello ונרשום-
//did -a dname id friend


הוא יוסיף לטקסט הקיים את מה שרשמנו ומה שיתקבל זה "hello friend".

d-
פרמטר זה מוחק מליסט בוקס שורה מסויימת שבחרתם.
התבנית:

//did -d dname id N


כפי שראיתם זהו התבנית לפרמטר,
הפרמטר N מציין את מספר השורה שהוא ימחק מהליסט בוקס ...

שימו לב!
פרמטר זה שונה לחלוטין מהפרמטר r-.
הפרמטר r- ימחק את כל הטקסט שקיים באיי די,
ולעומתו הפרמטר d- ימחק רק את מספר השורה (N) שנבחרה!

i-
פרמטר זה מכניס את הטקסט לשורה הנבחרה (N) אך לא ימחק את הקודמת!
דוגמא:

//did -i dname id 1 Hello


פקודה זו תכניס את הטקסט "Hello" לליסט בוקס שבאיי די הנבחר ולשורה מס' 1.
התבנית די דומה לקודמת רק פה צריך להכניס טקסט כדי להכניסו לשורה מס' N בליסט בוקס.
אם קיים טקסט בשורה מס' N אז הוא יכניס במקומו את הטקסט שהכנסתם ואת הטקסט שהיה בשורה הוא יוריד לשורה חדשה..

o-
פרמטר זה די דומה לפרמטר i- רק הפעם הוא מחליף את הטקסט הקיים בשורה מס' N בליסט בוקס.
דוגמא:

//did -o dname id 2 BRB


פקודה זו תשנה ותחליף את הרשום בשורה מס' 2 לטקסט "BRB".

g-
פרמטר זה קובע אייקון חדש בקונטרול.
דוגמא:

/did -g dname id [n] filename


אם אתם שואלים מהו ה [n] אז פשוט הוא מסמל את המספר של התמונה שהוא יציג.
למשל, אם הקובץ הוא mirc.exe ותשנו כל פעם מספר, מה שיוצג לכם כל פעם זה תמונה אחרת של המירק.

z-
פרמטר זה יגדיר את הרוחב של פס הגלילה (scrollbar) שבליסט בוקס לברירת מחדל כלומר מחזיר אותו לגודלו המקורי.

j-
פרמטר זה מחזיר את כל ההגדרות של האדיט בוקס לברירת מחדל במידה ושינית את ההגדרות לפני כן.

עד פה לנושא /did

4. $did
לאחר ששינינו את התוכן של הדיאלוג, את הטקסט והכפתורים, אנו רוצים לקבל מידע עליהם ולדעת מה רשום באדיט ומה רשום בשורה שנבחרה בליסט ועוד..
לכן, במזהה זה תוכלו להשיג הגדרות של איי די מסוים שבדיאלוג ועל זה נפרט כעת.
הפורמט של מזהה זה הוא:

$did(name,id)


האפשרויות שניתן להשתמש בהם הם:
text -
מחזיר את הטקסט הנמצא באותו איי די.
לדוגמא:

$did(id).text


כמובן שאפשר גם בדרך אחרת לקבל את הטקסט ע"י המזהה עצמו ללא הפרמטר text.
כלומר:

$did(id)


פרמטר זה חשוב מאוד ושימושי,
למשל בדיאלוג שיצרתי יש אדיט ואני רוצה לקבל את הטקסט הרשום בתוך האדיט, אז פשוט אני ארשום כך:

//echo -a $did(dname,id).text


len -

הפורמט של הפרמטר-
$did(dname,id,N)


פרמטר זה מחזיר את אורך הטקסט של אותה שורה שנרשמה בפרמטר N.
דוגמא לשימוש:

$did(dname,id,1).len


במקרה זה, הוא יחזיר את האורך של הטקסט המצוי בשורה ראשונה באיי די שציינו ובדיאלוג שציינו..

lines -
מחזיר את מספר השורות הנמצא בטקסט.
לדוגמא בדיאלוג שיצרתי יש אדיט וכעת אני רוצה לדעת כמה שורות יש לי בתוך האדיט, אני אעשה זאת דרך הפקודה הבאה:

//echo -a $did(dname,id).lines


פקודה זו תרשום לנו את מספר השורות בו האדיט מכיל.

sel -
מחזיר את מספר השורה שסומנה בליסט בוקס וכו'...
דוגמא:

//echo -a $did(dname,id).sel


נניח וסימנתי שורה מסויימת ואני רוצה לדעת מה מספר השורה שסימנתי אז אני אעשה את הפקודה הנ"ל.

seltext -
כמו הקודם רק פה שהוא מחזיר את הטקסט שנבחר באדיט או בליסט בוקס.
נניח שבניתם דיאלוג ובתוכו יש ליסט בוקס ורשום לכם שם כמה דברים..כאשר נלחץ פעמיים על הטקסט שבליסט בוקס זה יעשה לנו כך וכך..

selstart -
מחזיר כמה תווים יש בטקסט לפני התו הראשון של הבחירה במחרוזת.
שימו לב! פרמטר זה עובד רק באדיט בוקס (editbox)!

נניח ויש לנו באדיט את הטקסט הבא:
Hello Friend


אם נסמן את האותיות Hell כלומר נסמן מההתחלה ועד האות l שתיווצר המילה "Hell", המזהה יחזיר הוא 0 מפני שהמיקום שסימנו הוא ראשון ולכן אין תווים לפני האות הראשונה במחרוזת ולכן הוא מחזיר 0 תווים.
אם נסמן את האותיות "lo", הוא יחזיר את מספר התווים שלפני האות l שהם 3.

אז מה למעשה גילינו ?
[המספר המתקבל כתוצאה מהפרמטר] + 1 = מס' המיקום של האות הראשונה שסומנה במחרוזת .

selend -
פרמטר מקביל לקודם עם אותו עיקרון.
הפעם הוא לא יחזיר את מס' התווים הקיימים לפני התו הראשון שבמחרוזת שסומנה, אלא יחזיר את המיקום של התו האחרון בבחירה ביחס לכל הטקסט שבמחרוזת.

נחזור שוב לדוגמא:
נניח שוב יש באדיט את הטקסט
Hello Friend


אם נסמן הפעם את האותיות "Hell" הוא יחזיר 4 כי התו האחרון בבחירה הוא התו הרביעי ביחס לכל הטקסט.
אם נסמן "lo" הוא יחזיר 5 מפני שהתו האחרון בבחירה הוא o ומיקומו ביחס לכל הטקסט הוא 5.

state -
מחזיר את המצב בו הרדיו או הצ'אקבוקס נמצא,
אם מחזיר 0 הוא לא מסומן, אם מחזיר 1 הוא מסומן.
בדבר זה אנחנו משתמשים לכפתורי check או radio כדי לדעת אם הוא ב"וי" (מסומן) או שהוא לא.

next -
מחזיר את האיי די שיופיע כאשר תלחצו על מקש ה "Tab" במקלדת.
נניח ובאיי די 2 קיים אדיט בוקס, כאשר אני אלחץ על המקש Tab הפוקוס יהיה על איי די אחר, כדי להחזיר את האיי די שעליו הוא מתמקד לאחר שלחצנו נצטרך לרשום:

$did(dname,2).next

מחזיר את האיי די שיבוא אחרי שלחצנו על Tab מאיי די מס' 2.

prev -
אותו עיקרון, רק שבפרמטר הזה הוא הפוך.
במקום שיחזיר את האיי די שיבוא אחרי שנלחץ על Tab, הוא יחזיר את האיי די שהיה לפני שלחצנו על הכפתור.
למשל ואנחנו התמקדנו באיי די 3 ולחצתי על הכפתור Tab, הוא יידלג לאיי די אחר ויעשה עליו פוקוס.
כדי להחזיר את האיי די שהיה לפני שלחצנו שבמקרה שלנו הוא 3 נרשום:

$did(dname,3).prev


visible -
מחזיר $true אם הקונטרול לא פעיל ומוסתר כאפור.
מחזיר $false אם הכפתור לא מוסתר ונמצא במצב נומרלי.
דוגמא לשימוש-

($did(dname,id).visible)


enabled -
מחזיר $true אם הקונטרול מופעל ולא מוסתר ונמצא במצב נורמלי.
מחזיר $false אם הקונטרול לא פעיל ומוסתר כאפור.
דוגמא לשימוש-

$did(dname,id).enabled


עד פה סיימנו בנושא $did

5. $didwm
מזהה זה הוא די שימושי וחוסך הרבה לולאות מיותרות וכדומה ...
עיקרו של המזהה הוא להחזיר את מס' השורה שבו הטקסט נמצא בליסט בוקס ע"י wildtext.
פורמט המזהה:

$didwm(name,id,wildtext,N)


בטח אתם שואלים את עצמכם מה זה wildtext? מה צריך לרשום ב N ?
אז אני לא אשאיר אתכם בסימני שאלה וניגש ישר לעניין.
name - מציין את שם הדיאלוג שאנו עובדים עליו.
id - מציין את האיי די של הליסט בוקס שאנו רוצים לעבוד עליו.
wildtext - אולי רובכם מכירים את זה, זה כמו באיבנט on text.
מי שיודע את האיבנט on text לא תהיה לו שום בעיה.
ב wildtext נוכל לרשום את הטקסט המדויק שאנו רוצים לחפש או לרשום תו מסוים שהמילה מכילה כדי שיבדוק.
אני בטוח שעדיין זה לא ברור ולכן נביא כמה דוגמאות -
//echo -a $didwm(dname,2,mIRCx,0)


נעבור לניתוח המזהה:
dname - ציינתי בהסבר הנ"ל וזהו שם הדיאלוג.
2 - האיי די של הליסט בוקס.
mIRCx - זהו בעצם הפרמטר העיקרי, אנו רוצים לסרוק בכל השורות את המילה "mIRCx" בלבד ומתי שהוא ימצא אותו, הוא יחזיר את מס' השורה בו הוא נמצא.
כמובן שבמקום mIRCx אפשר להכניס כל טקסט אך זהו דוגמא.
הפרמטר '0' פשוט מציין מאיפה להתחיל את הסריקה, כלומר נגיד למירק מאיזה שורה להתחיל לחפש.. אם זה 0 זה יסרוק מההתחלה ואם זה מספר השונה מ0 הוא יסרוק החל משורה זו.

דוגמא נוספת וטיפה יותר מורכבת -
//echo -a $didwm(as,2,*IRC*,2)


נעבור על זה בקצרה כי פחות או יותר זה כמעט כמו הקודם.
הפעם ה wildcard שונה. ובטח אתם שואלים מהם הכוכביות שבצדדים ומה הם מסמלים?
הפעם זה לא יסרוק בכל שורה את המילה "IRC" בלבד,
אלא הפעם כפי ששמתם לב בwildcard יש שתי כוכביות "*IRC*"..
מה שזה אומר שבמקום הכוכבית הראשונה יכולה להופיע מילה או כמה מילים וכנ"ל לגבי הכוכבית השניה שבה יכולה להופיע מילה או כמה מילים.
זה יכול להיות AFIRCas או mIRCx או כל דבר אחר שבמקום הכוכבית יש כמה מילים שמייצגות אותו.
בנוסף, הוא יתחיל לסרוק משורה 2 והלאה ..

6. $didreg
מזהה זה פועל בדיוק אותו דבר כמו $didwm רק שמזהה זה פועל לפי regex ולא לפי wildtext.
דוגמא:
$didreg(name,id,regex,N)


כפי ששמתם לב יש לו את אותו מבנה רק שכאן מכניסים regex ..
על זה אני לא אפרט כי יש מדריך כזה באתר ולא קשור לנושא זה.

7. $didtok
מזהה זה מחזיר את כל מה שרשום בליסט/קומבו/אדיט בוקס בשורה אחת המחלק אותו לפי מס' הצ'אר שבחרנו.
הפורמט:
$didtok(name,id,C)


name - שם הדיאלוג שאנו עובדים עליו.
id - האיי די של הליסט/קומבו/אדיט בוקס.
C - מציין את מס' הצ'אר שאנו רוצים לחבר כל מילה במילה במשפט אחד...

דוגמא:

//echo -a $didtok(as,2,32)


פקודה זו בעצם תחזיר את כל השורות הרשומות בליסט הנמצא באיי די מס' 2 כמחוברות המופרדות בצ'אט מס' 32 שהוא רווח.
נניח והיה לנו בליסט את הטקסט הבא:
דני
יוסי
נירה
בר


הוא יחזיר:
דני יוסי נירה בר


כפי ששמתם לב, הוא החזיר את כולם בשורה אשר כל מילה מופרדת בטוקן 32.

8. /didtok

פקודה זו פועלת על אותו עיקרון כמו המזהה $didtok רק כאן היא מבצעת ההיפך.

התבנית:
/didtok name id C text


בעיקרון, הפקודה מוסיפה לאיי די את הטקסט הרשום לפי מס' הצ'אר שבחרנו שהוא יפריד ביניהם.
פקודה זו מאוד שימושית וחוסכת המון פקודות חוזרות.
אם שמתם לב, פקודה זו עושה ההיפך מהמזהה רק שפה היא מוסיפה מילה מילה בטקסט שרשמנו עפ"י הפרדה בין מילה למילה של צ'אר מסויים.
במזהה היא לוקחת מטקסט של כמה שורות ומביאה אותו לשורה אחת שכל טקסט שהיה בכל שורה מופרד בצ'אר מסוים.

name - שם הדיאלוג.
id - מס' האיי די של הליסט.
C - מס' הצ'אר שבחרנו שיפריד.
text - הטקסט שאנו רוצים שיוסיף לאיי די,
שימו לב! הטקסט יכול להכיל כמה מילים שלפי מספר הצ'אר שבחרתם הוא יפריד מילה ומילה ויוסיף אותה.. ממש פשוט.
אם עדיין לא הבנתם אני אביא מס' דוגמאות להדגים:

//didtok fk 2 32 a b c d e f


כפי שראיתם הטקסט מכיל כמה מילים שהם: a b c d e f.
אם שמתם לב הם מופרדים אחד מהשני ברווח ולכן מס' הצ'אר הוא 32 וזו הסיבה לכך שרשמנו בפקודה 32.
פקודה זו תוסיף לליסט כל מילה המופרדת ברווח לשורה חדשה וזה בעצם קיצור לפקודה הבאה:
//did -a as a | did -a as b | did -a as c | did -a as d | did -a as e | did -a as f


חסך הרבה נכון ?
לכן פקודה זו נועדה לקצר את הדרך הזאת בהפרדה של כמה מילים עפ"י הצ'אר.

אם עדיין לא מובן, דוגמא נוספת טיפה שונה:

//didtok fk 2 44 a,b,c,d,e,f


אם שמתם לב הפעם הצ'אר הוא לא 32 ולמה ?
כפי ששמתם לב הטקסט הוא: a,b,c,d,e,f ומה שמפריד בין כל מילה (אות) הוא הפסיק שמס' הצ'אט שלו הוא 44.
ולכן מה שנראה בליסט אחרי הפקודה יהיה:
a
b
c
...


מקווה שהפקודה מובנת :)

9. On Dialog
זהו הדבר העיקרי כדי שנוכל למעשה לגרום לדיאלוג לבצע פעולות שונות בעת פתיחתו, בעת לחיצה על כפתור מסויים, בעת שינוי טקסט באדיט ועוד..
בנושא זה תלמדו על כלל האיבנטים המצויים בדיאלוג.
ולמעשה עם זה תוכלו לרשום את תוכן הדיאלוג שיפעיל אותו.

קיימים מספר איבנטים שנפרט עליהם והם:
1.Init
2.Close
3.Edit
4.Sclick
5.Dclick
6.menu
7.scroll

כהתחלה, התבנית של האיבנט הוא:

on *:dialog:dname:event:id:{ commands }


dname - שם הדיאלוג שאנו נרצה לבצע עליו את האיבנט.
event - שם האירוע שנרצה שהוא יבוצע על אותו דיאלוג ועל אותו איי די. שמות האירועים מוזכרים בראשית הנושא.
id - מס' האיי די שאנו נרצה שאותו אירוע יבוצע רק עליו.

אז נתחיל באירועים,

Init
את האיבנט init אפשר להגדיר במילים אחדות - ברגע שהדיאלוג נפתח זה יעשה כך וכך...
שימו לב! באיבנט זה חייב לרשום את האיי די כ - 0 או * כברירת מחדל.

דוגמא:

on *:dialog:dname:init:0:{
echo -a כרגע פתחת את הדיאלוג
}


ננתח-
ברגע שנפתח את הדיאלוג זה ירשום "כרגע נפתח הדיאלוג" אך זהו סתם דוגמא רטורית.
כפי שראיתם ודאי שמתם לב ששמתי באיי די 0 ולא שום איי די אחר, חשוב לזכור!
כמובן שזהו לא השימוש היחיד לזה, אלא שבאיבנט זה נהוג לשמור במשתנים דברים מסויימים שנחוצים לדיאלוג ועוד דברים שאני לא אכנס אליהם עכשיו.

Close
האיבנט אומר - ברגע שהדיאלוג נסגר זה יעשה כך וכך..
דוגמא:

on *:dialog:dname:Close:{
echo -a תודה שהשתמשת בדיאלוג זה.
}


ננתח-
ברגע שנסגור את הדיאלוג זה ירשום לנו "תודה שהשתמשת בדיאלוג זה."
כמובן שגם לאיבנט זה יש שימושים רבים לזה אבל כרגע זהו סתם דוגמא וכמובן שהוא ישמש כשמירה של דברים מסויימים / מחיקה של דברים מסויימים ועוד..

Edit
האיבנט אומר שברגע שאדיט מתוך אדיטבוקס או מתוך קומבו משתנים או רושמים בתוכם טקסט מסויים אז הפקודה מתרחשת.
דוגמא:

on *:dialog:dname:edit:ID:{
echo -a האדיט השתנה
}


ננתח-
ברגע שהאדיט באיי די מסויים משתנה או שרושמים הודעה כלשהי באדיט זה ירשום לנו באקו "האדיט השתנה".
ניתן להשתמש באיבנט זה להוספת טקסט לאדיט, לעצירת פעילות הטקסט באדיט, וכו'..

Sclick
האיבנט אומר שכשלוחצים קליק אחד שמאלי על radio / list / combo / check / button זה יעשה כך וכך..
כאשר תלחצו על כפתור מסוים או על אחד מהפריטים הנ"ל הוא יעשה פקודה מסוימת שבחרתם..
דוגמא:

on *:dialog:dname:sclick:ID:{
Commands
}


במקום ה- dname הציבו את שם הדיאלוג ובמקום ה-ID תציבו את האיי די שבחרתם.

Dclick
כאשר עושים דאבל קליק על list או combo box זה יעשה כך וכך..
דוגמא:

on *:dialog:dname:dclick:ID: {
  if ($did(1).sel == 2) dialog -m bla bla
}


ננתח:
ברגע שנלחץ דאבל קליק בליסט הוא יבדוק אם לחצנו על האיקון הראשון (מתחיל מ-2) ואם כן הוא יפתח את הדיאלוג שרשמנו.
באיבנט זה משתמשים בדרך כלל בקונטרול פאנל שבו יש אייקונים וכאשר לוחצים עליהם הם יפתחו את הדיאלוג הרצוי לו.
כמובן שזה לא השימוש היחידי אבל זהו רק דוגמא אחת.

menu
איבנט זה משמש לתפריט ראשי שבדיאלוג.
כאשר נלחץ על אחד הפריטים שתפריט הדיאלוג הוא יעשה כך וכך ...

דוגמא:

on *:dialog:dname:menu:ID:{
  echo -a הפריט נלחץ
}


ננתח-
ברגע שאני אלחץ על פריט מסויים בתפריט זה ירשום לי באקו "הפריט נלחץ".

scroll
איבנט זה מתייחס לפס הגלילה שבדיאלוג (scroll),
ברגע שאנו משנים את מיקומו של פס הגלילה ומוזיזים אותו הוא יעשה כך וכך..

דוגמא:

on *:dialog:dname:scroll:ID:{
  echo -a פס הגלילה השתנה.
}


ננתח-
ברגע שאני אזיז את פס הגלילה הוא ירשום באקו "פס הגלילה השתנה".
לא מצאתי דוגמא שימושית לאיבנט זה אבל הדוגמא מספיקה להמחשה :)

עד פה סיימנו :)

תודה מיוחדת ל- Hydro, Subby ובמיוחד ל Gortaor על התמיכה בעת הצורך.
מה שנשאר לאחל הוא שיהיה בהצלחה לכולם! :wink:

מדריך זה נכתב ע"י אור Or במקור לפורום mIRCx עבור האתרhttp://www.mIRCx.Co.iL
כל הזכויות שמורות לאור, העתקה אסורה בהחלט!

הצטרף: 30 יוני 2010, 18:18
הודעות: 75
פורסם: 26 דצמבר 2010, 15:52
ידעתי שהמדריך הזה מוכר לי :) כל הכבוד גבר :)
In the name of God, impure souls of the living dead shall be banished into eternal damnation
Amen
תמונה
אפשר למצוא אותי בערוץ החברים שלי בקווקנט tomer2k#

הצטרף: 01 יולי 2010, 07:43
הודעות: 368
פורסם: 27 דצמבר 2010, 16:12
חחח זה ה-מדריך לדיאלוגים.
כל הכבוד אור !

כמובן שאין צורך לחכות לתגובות במדריך שלך, מועבר ישר לפורום מדריכים.
שימו לב: בוטי המשחק שאני בונה לא מתאימים לQuakenet אלא אם כן צויין אחרת.
<+vendetta-> סיאג לחוכמה שתיקה
<+vendetta--> בא לי מוח
<Ninja`> דפקתי נקנקיה

הצטרף: 29 יוני 2010, 16:13
הודעות: 111
פורסם: 29 דצמבר 2010, 18:08
המדריך הישן והמושלם :)


חזור אל מדריכים