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

[מדריך] קבלת לוגים משרת HL

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

הצטרף: 30 יוני 2010, 18:18
הודעות: 75
פורסם: 02 יולי 2010, 11:16
מדריך על קבלת לוגים מישרת HL

דרישות:
מירק
ידע בסקריפטים
סיסמת הרקון של השרת

לפני שנתחיל:
דבר ראשון נכניס את האיפי של השרת למשתנה בצורה הזו:
/set %ip IP:PORT


כמובן ש IP:PORT
זה איפי והפורט של השרת

דבר שני ניבחר פורט מסוים שיוסבר בהמשך למה הוא משמש
אני מאוד אוהב את הפורט 7121 אז יאללה למה לא
נכניס את הפורט למישתנה בעזרת הפקודה
/set %gatset.port 7121
ואחרון חביב את הריקון פאסס בעזרת הפקודה
/set %Rconpass  123

123 = סיסמת הריקון

עכשיו, מה זה לוגים?
לוגים זה כל מה הקורה במישחק במישפטים כמו:
-S Server say "Hi MircX"
-S Server cvar "sv_restart" = "1"
-S World triggered "Restart_Round_(1_second)"
-S Team "CT" scored "1" with "0" players
-S Team "TERRORIST" scored "0" with "1" players
-S Server cvar "sv_restart" = "0"
-S "PLAYER3 <3 ICECRIM<1><STEAM_0:0:10413263><TERRORIST>" triggered "Spawned_With_The_Bomb"
-S World triggered "Round_Start"

בידיוק באותו הצורה באופן שוטף

כדי לעשות דבר כזה דבר ראשון צריך לרשום את האיפי שלנו לשרת עצמו כדי שישלח את הנתונים אלינו
עושים זות בעזרת הפקודה:
logaddress_add $ip %gatset.port

עכשיו נפרט
logaddress_add - זות הפקודה
$ip - מחזיר של האיפי של המחשב
%gatset.port - הפורט שלנו
תבינו לא מספק שהשרת ישלח את המידע למחשב אנכנו צריכים לציין גם מיקום במחשב ולצורך זה יש את הפורט הזה
עכשיו כדי לשלוח לשרת את הפקודות לשרת HL נשתמש באלייס הבא: 

alias rconcmd {
  sockudp -k rconcmd $gettok(%ip,1,58) $gettok(%ip,2,58) $str($chr(255),4) $+ rcon %challenge.rcon " $+ %Rconpass $+ " $1-
}


פתיחת האליס
alias rconcmd {

פותח סוקט
sockudp -k rconcmd

מחזיר את האיפי והפורט של השרת שמוגדר במשתנה %ip עם רווח במקום נקודותיים
$gettok(%ip,1,58) $gettok(%ip,2,58)

המידע שאנו שולחים לשרת בנוי מכמה חלקים:
str($chr(255),4) $+ rcon %challenge.rcon " $+ %Rconpass $+ " $1-

str($chr(255),4) - חובה בכל אתחלת פקודה שנשלחת לשרת HL
rcon = מילה המציינת לשרת שאנו שולחים לו פקודת רקון
%challenge.rcon - מספר מסויים שהשרת מחזיר לנו , חובה לשלוח אותו כאשר אנו רוצים לשלוח פקודת רקון
%Rconpass - סיסמת הרקון
$1- - הפקודה לשרת
} - סוגר

challenge.rcon
כדי לכבל את המספר הזה יש תשתמשו בקוד הזה :
alias start {
  sockclose challenge.rcon
  sockudp -k challenge.rcon $gettok(%ip,1,58) $gettok(%ip,2,58) $str($chr(255),4) $+ challenge rcon
}
on *:udpread:challenge.rcon:{
  sockread -f %challenge.rcon
  set %challenge.rcon $gettok(%challenge.rcon,3,32)
}
לשימוש /start

אחרי שאנכנו יכולים לשולח לשרת פקודות נעשה:
//rconcmd logaddress_add $ip %gatset.port

עכשיו השרת שולך נתונים למחשב שלנו אבל אנכנו צריכים לקבל אותם לא?

הקוד הבא מכניס את הנתונים למשתנה ומציג אותם:
on *:udpread:rconLog:{
  sockread -f %Fconsole
  set %Fconsole $gettok(%Fconsole,6-,32)
  echo -S %Fconsole
}


ושוב לפרט:
יפעל מתי שמידע מהסוקט UDP הכנס ורק אם השם של הסוקט הוא rconlog
on *:udpread:rconLog:{

שומר את המידע במשתנה
sockread -f %Fconsole

יש דברים שלא צריך והם סתם אז מורידים אותם
set %Fconsole $gettok(%Fconsole,6-,32)

יחזיר את מה שיש במשתנה בחלון הסטטוס
echo -S %Fconsole


עכשיו אחרי שהכול מוכן ניפתח את הסוקט בעזרת הפקודה:
 //sockudp -k rconLog %gatset.port $gettok(%ip,1,58) $gettok(%ip,2,58) $str($chr(255),4)

עכשיו פשות היו לך כל הלוגים בחלון הסטטוס
ויש גם אפשרת לשלב פה תנעים ולבצעה פקודות כמו פה:
  if (%Fconsole != $null) {
    if (*" say "* iswm %Fconsole) {
      if (!rr isin %Fconsole) { rconcmd sv_restart 1 }
}
}
והקוד המלא:
alias start {
  sockclose rconLog
  sockclose challenge.rcon
  sockudp -k challenge.rcon $gettok(%ip,1,58) $gettok(%ip,2,58) $str($chr(255),4) $+ challenge rcon
}
on *:udpread:challenge.rcon:{
  sockread -f %challenge.rcon
  set %challenge.rcon $gettok(%challenge.rcon,3,32)
  rconcmd logaddress_del $ip %gatset.port
  .timer 1 1 rconcmd logaddress_add $ip %gatset.port
  .timer 1 2 sockudp -k rconLog %gatset.port $gettok(%ip,1,58) $gettok(%ip,2,58) $str($chr(255),4)
}
on *:udpread:rconLog:{
  :nextudp
  sockread -f %Fconsole
  if ($sockbr == 0) { return }
  set %Fconsole $gettok(%Fconsole,6-,32)
  if (%Fconsole != $null) {
    if (*" say "* iswm %Fconsole) {
      if (!rr isin %Fconsole) { rconcmd sv_restart 1 }       
    }
    echo -S %Fconsole
  }
  goto nextudp
}
alias rconcmd {
  sockudp -k rconcmd $gettok(%ip,1,58) $gettok(%ip,2,58) $str($chr(255),4) $+ rcon %challenge.rcon " $+ %Rconpass $+ " $1-
}

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


עד כאן המדריך.
כל הזכויות שמורות לVendetta, נכתב עבור אתר mIRCx.

-------------------------------------------------------------------
ראיתי שמבקשים איך לראות את השחקנים בסרבר
אז זה פשות שולחים לשרת את הפקודה STAT או STATUS מי שמכיר אפשר לעשות את זה בקונסול של המישחק ולקבל את המידעה :] קוד:
alias info {
 sockudp -k HL $gettok(%ip,1,58) $gettok(%ip,2,58) $str($chr(255),4) $+ rcon %challenge.rcon " $+ %Rconpass $+ " stat
}
 
alias HLVAR { return $bvar(&HL,1,$bvar(&HL,0)).text }
on *:udpread:hl:{
  sockread &HL
  breplace &HL 0 254
echo -a  $HLVAR
}
In the name of God, impure souls of the living dead shall be banished into eternal damnation
Amen
תמונה
אפשר למצוא אותי בערוץ החברים שלי בקווקנט tomer2k#

הצטרף: 13 יולי 2010, 18:38
הודעות: 20
פורסם: 13 יולי 2010, 18:48
תודה.. איזה השקעה :D
תמונה

הצטרף: 01 יולי 2010, 07:18
הודעות: 95
פורסם: 14 יולי 2010, 15:36
יפה מאוד, כל הכבוד על ההשקעה.
תמונה

הצטרף: 13 מרץ 2011, 19:12
הודעות: 1
פורסם: 12 מאי 2011, 16:01
אחי איך אני עושה שרק אדמין יכול לעשות את הפקודה או רק מי שיש לו ניק שבחרתי שיהיה לו אדמין?

הצטרף: 31 אוגוסט 2010, 11:07
הודעות: 57
פורסם: 14 מאי 2011, 20:12
dvir174 כתב:
אחי איך אני עושה שרק אדמין יכול לעשות את הפקודה או רק מי שיש לו ניק שבחרתי שיהיה לו אדמין?

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

הצטרף: 29 אפריל 2011, 18:04
הודעות: 3
פורסם: 20 אוגוסט 2011, 21:52
מדריך מצויין ומושקע מאוד,
עזר מאוד למתחיל כמוני!
תודה רבה


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

cron