עמוד ראשי מירק סקריפטינג ארכיון [פרסום] מנהל חשבונות - Q Account Manager

[פרסום] מנהל חשבונות - Q Account Manager

ארכיון האתר הוא לנושאים שלא נמצאו לנכון לפרסום אך בכל זאת יכולים להוות שימוש.

הצטרף: 08 ספטמבר 2011, 19:03
הודעות: 2
פורסם: 08 ספטמבר 2011, 19:32
הפעלה: בf4
או
לחצן ימני -> Q Account Manager

תיאור:
מנהל חשבונות Q שבו אתם יכולים לשמור את חשבונות ה- Q שלכם ולהתחבר אליהם.
תמונה: תמונה

 dialog QAccountM {
  title "Q Account Manager"
  size -1 -1 213 225
  option dbu
  edit "Enter Q Account Name", 1, 7 5 73 13, autohs autovs center
  edit "Enter Q Account Password", 2, 88 5 73 13, autohs autovs center
  button "Add", 3, 165 5 37 13
  list 4, 7 22 195 159, size vsbar
  button "Del Account", 5, 7 182 40 12
  button "Clear List", 6, 85 182 40 12
  button "Login Account", 7, 162 182 40 12
  button "Accounts Editor", 8, 7 195 195 12
  edit "", 9, 7 208 195 10, read center
  text "Roi- script", 10, 1 218 211 8, center
}

menu * {
  Q Accounts Manager { dialog -m QAccountM QAccountM }
}

alias f4 {
  dialog -m QAccountM QAccountM
}

on *:dialog:QAccountM:sclick:*: {
  if ($did == 3) {
    if ($did(1).text != $null) && ($did(2).text != $null) {
      if ($numtok($did(1).text,32) == 1) && ($numtok($did(2).text,32) == 1) {
        if ($readini(MQAccounts.ini, QAccounts, $did(1).text) == $null) {
          writeini MQAccounts.ini QAccounts $did(1).text $did(2).text
          set %qaccouts.save %qaccouts.save $did(1).text
          set %details.number $numtok(%qaccouts.save,32) 
          did -ra $dname 9 Details: Total Q Accounts: %details.number $+ ,
          did -a $dname 4 $did(1).text
          did -r $dname 1,2
        }
        elseif ($readini(MQAccounts.ini, QAccounts, $did(1).text) != $null) && ($input(This Q account is already in the list,o,Error)) {
          did -r $dname 1,2
        }
      }
      elseif ($numtok($did(1).text,32) != 1) || ($numtok($did(2).text,32) != 1) && ($input(You cant use "space" in the Q account name\password,o,Space Error)) {
        if ($numtok($did(1).text,32) != 1) {
          did -r $dname 1
        }
        if ($numtok($did(2).text,32) != 1) {
          did -r $dname 2
        }
      }
    }
  }
  elseif ($did == 5) {
    if ($did(4).seltext != $null) {
      remini MQAccounts.ini QAccounts $did(4).seltext
      set %qaccouts.save $remtok(%qaccouts.save, $did(4).seltext, 32)
      set %details.number $numtok(%qaccouts.save,32) 
      did -ra $dname 9 Details: Total Q Accounts: %details.number $+ ,
      did -d $dname 4 $did(4).sel
    }
  }
  elseif ($did == 6) {
    if (%qaccouts.save != $null) && ($input(Are you sure that you want to clear the Q accounts list?,y,Clear List)) {
      remini MQAccounts.ini QAccounts
      unset %qaccouts.save
      did -ra $dname 9 Details: Total Q Accounts: 0,
      did -r $dname 4
    }
  }
  elseif ($did == 7) {
    if ($did(4).seltext != $null) {
      /msg Q@CServe.quakenet.org AUTH $did(4).seltext $readini(MQAccounts.ini, QAccounts, $did(4).seltext)
    }
  }
  elseif ($did == 8) {
    dialog -m AccoutsEditor AccoutsEditor
  }
}

on *:dialog:QAccountM:dclick:*: {
  if ($did == 4) {
    if ($did(4).seltext != $null) {
      /msg Q@CServe.quakenet.org AUTH $did(4).seltext $readini(MQAccounts.ini, QAccounts, $did(4).seltext)
    }
  }
}

on *:dialog:QAccountM:init:*: {
  var %qam.check 1
  var %qam.test $numtok(%qaccouts.save,32)
  while (%qam.check <= %qam.test) {
    if ($gettok(%qaccouts.save, %qam.check, 32) != $null) {
      did -a $dname 4 $gettok(%qaccouts.save, %qam.check, 32)
      inc %qam.check
    }
  }
  if (%qaccouts.save != $null) {
    set %details.number $numtok(%qaccouts.save,32)
    did -a $dname 9 Details: Total Q Accounts: %details.number $+ ,
  }
  elseif (%qaccouts.save == $null) {
    unset %details.number
    did -a $dname 9 Details: Total Q Accounts: 0,
  }
}


dialog AccoutsEditor {
  title "Accounts Editor"
  size -1 -1 213 45
  option dbu
  combo 1, 8 4 152 50, size hsbar drop
  button "Edit", 2, 165 4 37 12
  edit "", 3, 8 23 70 12, read autovs center
  edit "", 4, 80 23 80 12, autovs center
  button "Save", 5, 165 23 37 12
  text "Roi- script", 6, 0 37 213 8, center
}

on *:dialog:AccoutsEditor:sclick:*: {
  if ($did == 2) {
    if ($did(1).text != $null) {
      did -e $dname 4,5
      did -ra $dname 3 $did(1).text
      did -ra $dname 4 $readini(MQAccounts.ini, QAccounts, $did(1).text)
    }
  }
  elseif ($did == 5) {
    if ($numtok($did(4).text,32) == 1) {
      if ($readini(MQAccounts.ini, QAccounts, $did(3).text) != $null) {
        if ($did(3).text != $null) && ($did(4).text != $null) && ($input(Password has been changed. $crlf $+ ( $+ $did(3).text $+ ) password is now: ( $+ $did(4).text $+ ).,o,Q Accout Editor)) {
          writeini MQAccounts.ini QAccounts $did(3).text $did(4).text
          did -r $dname 3,4
          did -b $dname 4,5
        }
      }
    }
    elseif ($numtok($did(4).text,32) != 1) && ($input(You cant use "space" in the Q account password,o,Space Error)) {
      did -ra $dname 4 $readini(MQAccounts.ini, QAccounts, $did(1).text)
    }
  }
}

on *:dialog:AccoutsEditor:init:*: {
  did -b $dname 4,5
  var %qam.check 1
  var %qam.test $numtok(%qaccouts.save,32)
  while (%qam.check <= %qam.test) {
    if ($gettok(%qaccouts.save, %qam.check, 32) != $null) {
      did -a $dname 1 $gettok(%qaccouts.save, %qam.check, 32)
      inc %qam.check
    }
  }
}
 

Zen-
מנהל גלובאלי
Re: Q Account Manager
הצטרף: 20 יוני 2011, 21:35
הודעות: 100
פורסם: 08 ספטמבר 2011, 19:35
יש לי שאלה כללית לגבי מה שבנית, מה המטרה של הסקריפט ? כלומר, כמה כבר משתמשים יש לכל אחד שניתן למצוא צורך לסקריפט כזה ?
אצלי אישית יש משתמש אחד שלי ובנוסף משתמש למירק השני שלי שמתפקד כבוט (במקרה ויש לי בו צורך).

שאלה כנה.

bild
משתמש רשום
Re: Q Account Manager
הצטרף: 08 ספטמבר 2011, 19:03
הודעות: 2
פורסם: 08 ספטמבר 2011, 19:37
לי לדוגמה יש 46 , ולא רק לי , גם לאחרים ...

NiX
משתמש רשום
Re: Q Account Manager
הצטרף: 15 אוגוסט 2010, 14:55
הודעות: 20
פורסם: 08 ספטמבר 2011, 19:55
מבחינת הרעיון - מוכר וחרוש, כמו שיונתן אמר: תשפר את זה אולי בסוקט שנכנס לאימייל ושולף את האישור
מבחינת הכתיבה - במקום לעשות 20 on dialogs, תעשה אחד שמחולק להרבה מחלקות.
במקום לעשות שונה מnull$ , אתה יכול להוסיף ! (סימן קריאה) לפני הסימן של המשתנה, זה אותו דבר.
כתיבה נחמדה, מחר אני אקח את הקוד, אערוך את ההודעה וארשום פה תגובה בונה באמת

Zen-
מנהל גלובאלי
Re: Q Account Manager
הצטרף: 20 יוני 2011, 21:35
הודעות: 100
פורסם: 08 ספטמבר 2011, 20:21
הארות/הערות על הסקריפט עצמו:

1) הבחירה שלך להשתמש ב F4 בתור קיצור דרך לא טובה, אצלי למשל הכפתור הזה בשימוש במירק וזה יוצר התנגשות.
2) דיאלוג עצמו:
א) בתיבות טקסט למעלה: היה נחמד אם ברגע שהייתי לוחץ עליהן כדי להוסיף מידע הטקסט שהיה כתוב היה נמחק ומונע ממני את הצורך למחוק ידנית.
ב) הדיאלוג עצמו גדול מדי, נראה תפל בגלל גודלו וחוסר במילואו, הכוונה היא, הגודל שלו גדול מאד אבל אין במה למלא את כל הגודל הזה, ניתן להקטין אותו לפחות בחצי לטעמי.
ג) השורה שלפני האחרונה Details: Total Q Accounts: 1, מבחינה אסתטית לא הבנתי את המבנה, הייתי משמיט את ה details: ואת הפסיק אחרי מספר החשבונות.
ד) accounts editor - ברגע שבחרתי משתמש הייתי מעדיף שזה כבר יתן לי אופציה לערוך בלי ללחוץ בנוסף על כפתור EDIT

3)
menu * {
  Q Accounts Manager { dialog -m QAccountM QAccountM }
}

יש לשמור על המבנה הנכון:
menu * {
  Q Accounts Manager:/dialog -m QAccountM QAccountM
}

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

4)
if ($did(1).text != $null) && ($did(2).text != $null) {

כמו פה וכמו בשאר המקומות הדומים ניתן לקצר עוד את הפעולה בצורה הזאת:
if (!$did(1).text) && (!$did(2).text) {

אותו עיקרון, יותר יעיל.

5)
 set %qaccouts.save %qaccouts.save $did(1).text
          set %details.number $numtok(%qaccouts.save,32) 
          did -ra $dname 9 Details: Total Q Accounts: %details.number $+ ,

למה הצורך להשתמש במשתנים ? יש לך את כל המשתמשים בקובץ INI
והשורה השלישית, במקום להכניס למשתנה את מספר האיברים שנמצאים במשתנה אחר פשוט אתה יכול להשתמש במספר השורות שיש לך ב LIST, מספר השורות = מספר המשתמשים (כמובן אחרי שתעדכן את המשתמש החדש ולא לפני).

6)
elseif ($readini(MQAccounts.ini, QAccounts, $did(1).text) != $null) && ($input(This Q account is already in the list,o,Error)) {
          did -r $dname 1,2
        }

לא הבנתי למה הכנסת INPUT כתנאי ? ולמה יש לך בכלל תנאי על תנאי ? אם פה
if ($readini(MQAccounts.ini, QAccounts, $did(1).text) == $null) {

זה לא אמת, כלומר אין משתמש כזה ואתה מוסיף אחד חדש, אז ב else "אחרת" יש משתמש כזה, ואין צורך לבצע בדיקה חוזרת, פשוט:
 else {
          noop $input(This Q account is already in the list,o,Error)
          did -r $dname 1,2
        }


7) אותו דבר פה:
      elseif ($numtok($did(1).text,32) != 1) || ($numtok($did(2).text,32) != 1) && ($input(You cant use "space" in the Q account name\password,o,Space Error)) {

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

8)
on *:dialog:QAccountM:dclick:*: {
  if ($did == 4) {
    if ($did(4).seltext != $null) {
      /msg Q@CServe.quakenet.org AUTH $did(4).seltext $readini(MQAccounts.ini, QAccounts, $did(4).seltext)
    }
  }
}

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

9) כל החלק של ה on *:dialog:QAccountM:init:*: {
לדעתי בזבוז בשימוש במשתנים, ניתן היה לעשות לולאה פשוטה שתקרא מקובץ האיני, שים לב מכל ה INIT הארוך היה אפשר לקצר ככה:
on *:dialog:QAccountM:init:*: {
  var %x = 1
  while ($ini(MQAccounts.ini,QAccounts,%x)) { did -a $dname 4 $v1 | inc %x }
  did -a $dname 9 Total Q Accounts: $did($dname,4).lines
}

יפה, קצר, יעיל ואסתטי.

10)
on *:dialog:AccoutsEditor:sclick:*: {
  if ($did == 2) {
    if ($did(1).text != $null) {

לאחד תנאים בשורה אחת, הרי אין לך פה else.

11)
if ($readini(MQAccounts.ini, QAccounts, $did(3).text) != $null) {
        if ($did(3).text != $null) && ($did(4).text != $null) && ($input(Password has been changed. $crlf $+ ( $+ $did(3).text $+ ) password is now: ( $+ $did(4).text $+ ).,o,Q Accout Editor)) {
          writeini MQAccounts.ini QAccounts $did(3).text $did(4).text
          did -r $dname 3,4
          did -b $dname 4,5
        }
      }

לאחד תנאים, להוציא את ה INPUT שלא יהיה בתור תנאי.
גם ב elseif שבא ישר אחרי להוציא INPUT.

12)
on *:dialog:AccoutsEditor:init:*: {

גם פה אין צורך במשתנים.

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

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

ZxoR
מנהל גלובאלי
Re: Q Account Manager
הצטרף: 01 יולי 2010, 07:43
הודעות: 368
פורסם: 09 ספטמבר 2011, 10:01
בנוסף לכל מה שזן אמר, פשוט לא השתמשת בטופס ולכן מועבר ישר לארכיון.
שימו לב: בוטי המשחק שאני בונה לא מתאימים לQuakenet אלא אם כן צויין אחרת.
<+vendetta-> סיאג לחוכמה שתיקה
<+vendetta--> בא לי מוח
<Ninja`> דפקתי נקנקיה


חזור אל ארכיון