Kriege den selben fehler auf meiner virtuellen maschine. Auf meinem anderen Windows 7 System keine Probleme. Muss man irgendwelche Libraries installieren?
Beiträge von teRRRa
-
-
Spielst aber schon auf dem soulstalker pserver ?
Oder ein anderer...
Notfalls den multiclient benutzen und dann musste der Char drin seinSent from my iPod touch using Tapatalk.
Ja auf Soulstalker und ist mit Adminrechten gestartet.
Ich probier nachher mal über den Launcher zu starten. -
Unter Autopot wird bei mir kein Charname angezeigt.
-
Welchen edxLoader benutzt du ? Gib mal bitte die Version an.
Kuh :>
version 5.0.3d
Ist die neuste soweit ich weiß? -
Gibt es noch irgendeinen packet based autopot der funktioniert? Der edxLoader funktioniert nicht mehr bei mir, kriege immer ne Fehler Meldung dass die Media.pk2 nicht geöffnet werden kann. Liegt wohl daran dass ihr die selber erstellt habt?
-
Über Launcher starten und Kompatibilitätsmodus auf XP stellen.
-
Ich kriege immer C8 failed to connect to server. Woran liegt das?
-
riehct irgendwie so als würde dein "kumpel" dich verarschen, lass dir die sendungsid von deinem kumpel geben, ich vermute mal dass er sagen wird das er sie nicht mehr hat. Bei der post kommt es eig nur zu ballungszeiten, wie zb an weihnachten zu paket verlusten, sonst ist das schon sehr unüblich.
-
Für dich vielleicht^^
Naja ich schau mir dann später nochmal das Packet an, vielleicht find ich ja irgendwo den Wert für die Größe des Inventars und wie viele Items darin sind..Guck mal mal die itemId von deiner waffe inner media.pk2 nach, dann suchst du nach der hexwert in deinem packet dump, am anfang sollte dann der slot stehen, und davor die anzahl der items und davor die anzahl der inventar slots. Hoffe das hilft dir.
-
Da ist mir klar , die antwort mit
(A102) 0205
war eigentlich an FisticuffJemand ne Idee wie ich den Analysator zum laufen bekomme ?
Fehlermeldung das er nicht zum nuConnector connecten kann.
Könnte ich die port einstellungen beim phConnector ändern ?Sorry dann hab ich dich falsch verstanden..
Ich bin mir ziemlich sicher dass das botport falsch ist, das ist irgendwas mit 20..., lösch mal beim phconnector die config datei und starte ihn, dann müsste er die datei mit dem richtigen port neu erstellen. -
Ich habe es nun geschaft , dass der phConnector mit ZsZc klappt nur der gute Analysator klappt nicht.
Habe son andeers billiges teil nun wo ich die Packete rauslesen kann, aber nicht direkt umgewandelt zum Text wie beim Analysator.Bei mir kommt jetzt schon seid 15minuten packet
(A102) 0205
und kein anderes.(6102) fürs einloggen natürlich auch.
Jemand ne Idee wie ich den Analysator zum laufen bekomme ?
Fehlermeldung das er nicht zum nuConnector connecten kann.
Könnte ich die port einstellungen beim phConnector ändern ?Das paket
(A102) 0205
bedeutet dass der server voll ist. -
Versuch das mal so:
Code- BeginPacket(0x6102) ; Richtiges Packet
- AppendByte(18) ; Stimmt
- AppendWord(StringLen($n)) ; Klappt
- AppendString($n) ; Klappt
- AppendWord(StringLen($p)) ; Klappt
- AppendString($p) ; Klappt
- AppendByte(0xFF);
- AppendWord(205) ; Klappt NICHT - Server Phoenix
- EndPacket()
- TCPSend($iSocket, GetPacket())
- Func GetPacket()
- Return _HexToString($globalSendBuffer)
- EndFunc ;==>GetPacket
- Func AppendWord($value)
- $sValue = HexToStrWord(Hex($value))
- $globalSendBuffer = $globalSendBuffer & StringMid($sValue, 3, 2) & StringMid($sValue, 1, 2) ; Habe hier schon ein FF zwischen gemacht, vergebens !
- $globalSendSize = $globalSendSize + 2
- EndFunc ;==>AppendWord
- Func HexToStrWord($var)
- $len = StringLen($var)
- If $len > 4 Then
- Return StringRight($var, 4)
- ElseIf $len == 4 Then
- Return $var
- ElseIf $len == 3 Then
- Return "0" & $var
- ElseIf $len == 2 Then
- Return "00" & $var
- ElseIf $len == 1 Then
- Return "000" & $var
- EndIf
- EndFunc ;==>HexToStrWord
-
Hmm..sry das versteh ich jetzt nicht wirklich..wenn das Paket immer gleich lang ist, wie kann ich dann damit arbeiten? Ich kann mit der Länge ja dann nicht Unterscheiden ob der Server nun voll ist, man eingeloggt ist oder falsche Logindaten eingegeben wurden. Unterscheiden kann ich nur dann, wenn vom Server eben die oben genannten Pakete kommen (0205, 0201), aber diese kommen ja nicht immer..
Und was bedeutet diese SessionID am Anfang? Die ändert sich bei jedem Loginversuch und erfolgreichem Login?Hab mich etwas missverständlich ausgedrückt.. Ich meine dass das Paket das der server sendet wenn man sihc erfolgreich eingeloggt hat immer z.B. 10 Bytes lang ist, das server-voll-paket ist z.B. 6 bytes lang. So kannste die unterscheiden.
Die Sessionid wird vom loginserver generiert und dem gameserver "mitgeteilt", wenn du dich dann am gameserver mit login etc anmeldest, prüft dieser ob die sessionid die ist, die der loginserver generiert hat. Das dient dazu dass man sich gehen kann dass der client der sich auf dem gameserver einloggt auch wirklich der client ist der sich am loginserver angemeldet hat. -
Die ersten 4 bytes sind die sessionid, die du beim gameserver login angeben musst. Wenn du das paket nicht parsen willst, kannst du über die länge der pakete arbeiten, die sind in den verschiedenen fällen (eingeloggt, voll etc) immer gleich lang.
-
Versuch doch einfach mal das FF davor zu klatschen.
-
Die ServerID ist ein word, besteht also eig aus 2 bytes, also müsste das eig stimmen was du schickst, sofern die serverid rihctig ist.
-
Du musst den edxLauncher benutzen, da einen haken bei hackshield bla machen und dann starten, mit dem normalen silkroad launcher gehts glaub ihc nicht weil das hackshield den phconnector blockt.
-
Die SroPackets.rar habe ich auch, nur ob das alles noch stimmt ist fraglich.
Charlistining stimme auch nicht mehr mit dem Opcode von der SroPackets.rar & iSro überein.Wenn das nicht der richtige ist, wie könnte ich den neuen rausfinden ?
Die Pakete stimmen noch.
Mit dem edxLoader werden einige pakete nicht angezeigt, ihc glaube das sind die verschlüsselten, versuch mal phconnector mit einem analysator (ich empfehle stealthex analysator) da kriege ihc immer alle angezeigt. -
Danke Mit Paket B021 klappt es wunderbar.
Code- Case "B021" ;Send Movement c->s 7021 / s->c B021
- BeginParse($packetData, Dec($packetSize))
- $playerid = Dec(ParseDword())
- $result = Dec(ParseByte())
- If $result == 1 Then
- $areax = Dec(ParseByte())
- $areay = Dec(ParseByte())
- $x = Dec(ParseWord())
- $z = Dec(ParseWord())
- $y = Dec(ParseWord())
- $region135x = Round(($areax - 135) * 192 + $x / 10)
- $region135y = Round(($areay - 92) * 192 + $y / 10)
- $recvtitle = "Moved: "
- AppendStatusText(@CRLF & $recvtitle & "x: " & $region135x & " y: " & $region135y)
- ;~ AppendStatusText(@CRLF & $recvtitle & "x: " & $cordx & ", y: " & $cordy); & ", z: " & $z)
- Else
- AppendStatusText("Fehler beim Laufen")
- EndIf
- - - - - - - - - - - - - - - - -
Update: 23:33
So, mein Tcp-Programm ist weiter als vorher.
Wollte nun einen Login machen nur ich wüsste nicht welches Packet das ist.
Habe mit 3Programmen die Packete ausgelesen aber da steht nix was dem Login ähnlich sein könnte.Code- [C->J](9000)
- [J->C](600D)0101000520
- [J->C](600D)000300020002
- [J->C](600D)01010000A1
- [J->C](0)FF
- [J->C](6107)
- [J->C](A107)020011006773706B72312E6A6F796D61782E636F6DBD320111006773707573312E6A6F796D61782E636F6DBD32
- [J->C](0)FF
- [J->C](0)FF
- [J->C](0)FF
- [J->C](0)FF
- [C->J](9000)
- [J->C](600D)0101000520
- [J->C](600D)0001000199090500000002
- [C->J](7007)02
Code- [S -> C][1007]
- 00 00 00 00 ................
- 00 00 00 00 ................
- [S -> C][0FF1]
- 01 00 00 00 ................
- 00 00 00 00 ................
- [S -> C][A107]
- 02 ................
- 00 ................
- 11 00 ................
- 67 73 70 6B 72 31 2E 6A 6F 79 6D 61 78 2E 63 6F gspkr1.joymax.co
- 6D m...............
- BD 32 .2..............
- 01 ................
- 11 00 ................
- 67 73 70 75 73 31 2E 6A 6F 79 6D 61 78 2E 63 6F gspus1.joymax.co
- 6D m...............
- BD 32 .2..............
- [S -> C][0FF2]
- 00 00 00 00 ................
- 00 00 00 00 ................
- [S -> C][0FF2]
- 00 00 00 00 ................
- 00 00 00 00 ................
- [S -> C][0FF3]
- 08 00 00 00 ................
- 06 00 00 00 ................
- [S -> C][0FF3]
- 00 00 00 00 ................
- 01 00 00 00 ................
- [C -> S][7007]
- 02 ................
Ausschnitte des Codes fürs einloggen.
Code- Func BeginPacket($opcode)
- $globalSendBuffer = ""
- $globalSendSize = 0
- $sOpcode = HexToStrWord(Hex($opcode))
- $globalSendBuffer = StringMid($sOpcode, 3, 2) & StringMid($sOpcode, 1, 2)
- $globalSendBuffer = $globalSendBuffer & "0000" ; Security bytes
- ;MsgBox(0, "", $globalSendBuffer)
- EndFunc
- Func HexToStrWord($var)
- $len = StringLen($var)
- if $len > 4 then
- return StringRight($var, 4)
- elseif $len == 4 then
- return $var
- elseif $len == 3 then
- return "0" & $var
- elseif $len == 2 then
- return "00" & $var
- elseif $len == 1 then
- return "000" & $var
- endif
- EndFunc
- Func AppendByte($value)
- $sValue = HexToStrByte(Hex($value))
- $globalSendBuffer = $globalSendBuffer & $sValue
- $globalSendSize = $globalSendSize + 1
- EndFunc
- Func HexToStrByte($var)
- $len = StringLen($var)
- if $len > 2 then
- return StringRight($var, 2)
- elseif $len == 2 then
- return $var
- else ; Error condition
- return "00"
- endif
- EndFunc
- Func AppendWord($value)
- $sValue = HexToStrWord(Hex($value))
- $globalSendBuffer = $globalSendBuffer & StringMid($sValue, 3, 2) & StringMid($sValue, 1, 2)
- $globalSendSize = $globalSendSize + 2
- EndFunc
- Func AppendString($value)
- For $i = 1 to StringLen($value) Step 1
- $xh = StringMid($value, $i, 1)
- $sValue = HexToStrByte(Hex(Asc($xh)))
- $globalSendBuffer = $globalSendBuffer & $sValue
- $globalSendSize = $globalSendSize + 1
- Next
- EndFunc
- Func EndPacket()
- $sSize = HexToStrWord(Hex($globalSendSize))
- $globalSendBuffer = (StringMid($sSize, 3, 2) & StringMid($sSize, 1, 2)) & $globalSendBuffer
- ;MsgBox(0, "", $globalSendBuffer)
- EndFunc
- Func GetPacket()
- return _HexToString($globalSendBuffer)
- EndFunc
- Func _Gui()
- $msg = GUIGetMsg()
- Select
- Case $msg = $GUI_EVENT_CLOSE
- SetError(-2)
- Exit
- Return
- Case $msg = $controlLogin
- $n = GUICtrlRead($controlName)
- If StringLen($n) == 0 Then
- MsgBox(0, "", "Account eingeben")
- Return
- EndIf
- $p = GUICtrlRead($controlPass)
- If StringLen($p) == 0 Then
- MsgBox(0, "", "Password eingeben")
- Return
- EndIf
- $s = "113" ; Helios
- ;~ MsgBox(0, "", $n & " " & $p & " " & $s)
- ;~ $doRequestStats = False
- BeginPacket(0x6102)
- AppendByte(18)
- AppendWord(StringLen($n))
- AppendString($n)
- AppendWord(StringLen($p))
- AppendString($p)
- ;~ AppendWord(ServerToId($s))
- AppendWord(113)
- EndPacket()
- TCPSend($iSocket, GetPacket())
- EndSelect
- EndFunc ;==>_Gui
Loginserver Auth
Opcode 0x6102Loginserver Response
Opcode 0xa102Code- 01 - Result
- if(result == 0x01) {
- 12 34 56 78 - Login ID
- 12 34 - Worldserver name length
- worldserver ip
- 12 34 - Worldserver port
- }
- if(result == 0x02) {
- 01 - Submode
- // Wrong password
- if(Submode == 0x01)
- {
- 12 34 56 78 - Current try
- 12 34 56 78 - Max try
- }
- // Block
- if(Submode == 0x02)
- {
- 01 - Subsubmode
- if(Subsubmode == 0x01) {
- 12 34 - Block reason length
- block reason
- }
- }
- // C7
- if(Submode == 0x06) {
- //c7
- }
- // Already logged in
- if(Submode == 0x03) {
- //c7
- }
- }
-
Hey Leute ich versuche schon sehr lange eine Register page zu nehmen für Srevolution Files die seid neuem dabei ist nur ich habe folgenden Fehler :
[cs]Notice: Undefined index: activ in C:\xampp\htdocs\reg.php on line 31
Fatal error: Call to undefined function mssql_connect() in C:\xampp\htdocs\reg.php on line 115[/cs]Register Page index.php :
[cs]<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #FFFFFF;
}
body {
background-color: #000033;
}
a:link {
color: #FFFFFF;
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #FFFFFF;
}
a:hover {
text-decoration: none;
color: #99FF00;
}
a:active {
text-decoration: none;
color: #FFFFFF;
}
-->
</style>
<div align="center">Silkroad Srevolution<br />
<a href="http://www.stagetwo.eu/reg.php"> Register new game account</a>
[/cs]Register Page reg.php :
[cs]<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #FFFFFF;
}
body {
background-color: #000000;
}
-->
</style>
<?php$mssql = array(
'host' => "*****-*****", //Your mssql host goes here
'user' => "sa", //Your mssql username goes here
'pass' => "*******" //Your mssql password goes here
// IMPORTANT !!! PRESS CTRL + R , REPLACE: , replace sr with your database name!
);function anti_injection($sql) {
$sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql);
$sql = trim($sql);
$sql = strip_tags($sql);
$sql = addslashes($sql);
return $sql;
}if($_POST['activ'] == '1') {
$accname = anti_injection($_POST['accname']);
$accpass1 = anti_injection($_POST['accpass1']);
$accpass2 = anti_injection($_POST['accpass2']);
$con = mssql_connect($mssql['host'],$mssql['user'],$mssql['pass']);
$result1 = mssql_query("SELECT * FROM sr.dbo.users WHERE id = '".$accname."'",$con);
$row1 = mssql_num_rows($result1);
if(empty($accname) empty($accpass1) empty($accpass2)|| empty($accname)) {
echo "<br>You didnt fill in all fields<a href='javascript:history.back()'>Go Back</a>";
} elseif($row1 > '0' $row2 > '0') {
echo "<br>This Account name already exists.<a href='javascript:history.back()'>Go Back</a>";
} elseif($accpass1 != $accpass2) {
echo "<br>The passwords did not match<a href='javascript:history.back()'>Go Back</a>";
} elseif($accpass1 == $accname) {
echo "<br>Account name and password are the same.<a href='javascript:history.back()'>Go Back</a>";
} elseif(!preg_match("/^[0-9a-zA-Z]{3,15}$/i", $accname)) {
echo "<br>Enter a account name only with 0-9 , a-z and A-Z.<a href='javascript:history.back()'>Go Back</a>";
} elseif(!preg_match("/^[0-9a-zA-Z]{3,15}$/i", $accpass1)) {
echo "<br>Enter a password only with 0-9 , a-z and A-Z.<a href='javascript:history.back()'>Go Back</a>";
} elseif(strlen($accname) < 3 strlen($accname) > 15) {
echo "<br>Username Must be above 3 and lower then 15 <a href='javascript:history.back()'>Go Back</a>";
} elseif(strlen($accpass1) < 3 strlen($accpass1) > 15) {
echo "<br>Password Must be above 3 and lower then 15 .<a href='javascript:history.back()'>Go Back</a>";
} else {$accpass = md5($accpass1);
$con = mssql_connect($mssql['host'],$mssql['user'],$mssql['pass']);
mssql_query("INSERT INTO sr.dbo.users (
id,
password,
online,
banreason,
ban,
silk,
gold,
checkinfo
)
VALUES (
'".$accname."',
'".$accpass."',
'0',
'0',
'0',
'0',
'0',
'0'
)",$con);
?>
<center>
<table width="500">
<tr>
<td colspan='2' align='center'><img src="top.jpg" width="500" height="300" /></td>
</tr>
<tr>
<td colspan="2" align="center" bgcolor="#333333">
Welcome to srevolution! Below are your details! Keep them safe!
</td>
</tr>
<tr>
<td bgcolor="#666666">
Account name:
</td>
<td bgcolor="#666666">
<b><?php echo "".$accname.""; ?></b>
</td>
</tr>
<tr>
<td bgcolor="#333333">
Your password:
</td>
<td bgcolor="#333333">
<b><?php echo "".$accpass1.""; ?></b>
</td>
</tr>
</table>
</center><?php
}} else {
$con = mssql_connect($mssql['host'],$mssql['user'],$mssql['pass']);
$result1 = mssql_query("SELECT * FROM sr.dbo.users",$con);
$row1 = mssql_num_rows($result1);
?><form action='reg.php' method='POST'>
<center>
<table width="500">
<tr>
<td colspan='2' align='center'>
<img src="top.jpg" width="500" height="300" />
</td>
</tr>
<tr>
<td bgcolor="#333333">Account Name</td>
<td bgcolor="#333333">
<input type='text' name='accname' maxlength='12'>
</td>
</tr>
<tr>
<td bgcolor="#666666">Password</td>
<td bgcolor="#666666">
<input type='password' name='accpass1' maxlength='12'>
</td>
</tr>
<tr>
<td bgcolor="#333333">Again pass.</td>
<td bgcolor="#333333">
<input type='password' name='accpass2' maxlength='12'>
</td>
</tr>
<tr>
<td align='center' bgcolor="#666666">
</td>
<td align='right' bgcolor="#666666">
<input type='hidden' name='activ' value='1' />
<input name="submit" type='submit' value='Create Account' />
</td>
</tr>
</table>
</center>
</form>
<?php
}
?>[/cs]Vllt kan mir jmd helfen und keine angst die ***** Oben hab ich extra reingemacht
Gruß Geforce
Danke schonmal im vorraus.Die php files sind auf eine mssql datenbank ausgelegt und xampp liefert soweit ich weiß nur eine mysql datenbank mit. Ob du jetzt einfach das ms in my ändern kannst weiß ich nicht, weil mssql evtl einen leicht anderen sql dialekt verwendet als es mysql macht.