Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Piszmy to razem! Czyli wspólne programowanie w sieci!


wojtek333314

Rekomendowane odpowiedzi

Opublikowano

Witam,

dziś mam do zaprezentowania kod serwera i klienta programu mojego autorstwa "Piszmy to razem" .

Służy on do pisania programów ,gier , czy ogólnie kodów w autoicie czy czymkolwiek chcecie wspólnie z dowolną liczbą osób.

 

Jak to ma wyglądać? Bardzo prosto (a może nie?):

-każdy z uczestników pisze kod w dużym polu po lewej

-do dyspozycji mamy czat dzięki któremu można się porozumiewać

-pracę skoordynujemy dzięki okienku "Zadania" , gdzie każdy może dodać i usunąć z listy zadanie , czyli wziąć je na siebie i tworzyć np. funkcję kolizji czy czegokolwiek

-naciskając przycisk "Udostępnij" nasz kod zostanie wysłany na serwer i stamtąd będzie mógł go pobrać każdy uczestnik

-każdy uczestnik może wybrać czy chce pracować na jednym pliku ,czy też z każdym wysłaniem go na serwer zapisywać go pod nową nazwą

-pobranie pliku następuje po wybraniu go z listy aktualnie znajdujących się plików na serwerze i naciśnięciu przycisku 'Pobierz', kod wyswietli się w zakładce Pobrane

 

To tyle co do instrukcji użytkowania :)

Może dodam do tego ss'a co by mieć zarys tego co piszę :

zrzutw.png

 

Czas na kod klienta , czyli naszego programu:

 

#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#Include <GuiEdit.au3>
#Include <String.au3>
#include <ScrollBarConstants.au3>
#Include <GuiRichEdit.au3>
#Include <File.au3>
#include <array.au3>
#include <Color.au3>

HotKeySet("{END}","auto")
OnAutoItExitRegister("wyjscie")

$statusserwera='OFF'
dim $tablica[40000]
$i=0

if FileExists("Skladnia")=0 then
DirCreate("Skladnia")
FileWrite("Skladnia\blue.txt")
FileWrite("Skladnia\jblue.txt")
FileWrite("Skladnia\red.txt")
FileWrite("Skladnia\fiolet.txt")
EndIf

if FileExists("konfiguracja.ini")=0 then
FileWrite("konfiguracja.ini",'')
IniWrite("konfiguracja.ini","Kolorowanie","glownefunkcjeautoit",1)
IniWrite("konfiguracja.ini","Kolorowanie","funkcjeuzytkownika",1)
IniWrite("konfiguracja.ini","Kolorowanie","interpunkcja",1)
IniWrite("konfiguracja.ini","Kolorowanie","liczby",1)
EndIf


$red=FileOpen("Skladnia\red.txt")
$blue=FileOpen("Skladnia\blue.txt")
$jblue=FileOpen("Skladnia\jblue.txt")
$fiolet=FileOpen("Skladnia\fiolet.txt")


#Region ### START Koda GUI section ###
$Form1_1 = GUICreate("Piszmy to razem! v.1.5", 1102, 630)
$Tab1 = GUICtrlCreateTab(0, 0, 1099, 625)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("Edytor")
$rich=_GUICtrlRichEdit_Create($form1_1,'',9, 27, 701, 572,BitOR($ES_WANTRETURN, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
$Group1 = GUICtrlCreateGroup("Zadania ", 717, 27, 374, 156)
$List1 = GUICtrlCreateList("", 720, 42, 196, 136)
$Input4 = GUICtrlCreateInput("", 918, 60, 169, 21)
$Label5 = GUICtrlCreateLabel("Dodaj:", 918, 42, 35, 17)
$Button5 = GUICtrlCreateButton("Dodaj zadanie do listy", 960, 84, 129, 25, $WS_GROUP)
$Button6 = GUICtrlCreateButton("Usuń zadanie", 1014, 153, 75, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Czat", 717, 183, 374, 171)
$Input1 = GUICtrlCreateInput("", 723, 324, 286, 21)
$Button2 = GUICtrlCreateButton("Wyslij", 1011, 321, 75, 25, $WS_GROUP)
$Edit3 = GUICtrlCreateEdit("", 723, 201, 359, 119,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL,$ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Pliki na serwerze ", 717, 477, 371, 144)
$Button4 = GUICtrlCreateButton("Pobierz !", 978, 588, 96, 25, $WS_GROUP)
$List3 = GUICtrlCreateList("", 723, 492, 247, 123)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Połączenie i opcje", 717, 351, 374, 123)
$Label1 = GUICtrlCreateLabel("Połączenie: ", 723, 414, 64, 17)
$Label2 = GUICtrlCreateLabel($statusserwera, 786, 414, 232, 17)
$Label3 = GUICtrlCreateLabel("IP Serwera: ", 723, 372, 62, 17)
$Label4 = GUICtrlCreateLabel("Nick: ", 819, 372, 32, 17)
$Button1 = GUICtrlCreateButton("Połącz", 942, 387, 81, 28, $WS_GROUP)
$Input2 = GUICtrlCreateInput("5.189.104.218", 723, 390, 94, 21)
$Input3 = GUICtrlCreateInput("", 819, 390, 121, 21)
$Radio1 = GUICtrlCreateRadio("Pracuj na jednym pliku", 723, 435, 134, 17)
$Radio2 = GUICtrlCreateRadio("Twórz nowe pliki za każdym updatem", 723, 450, 194, 17)
$Button3 = GUICtrlCreateButton("Udostępnij !", 927, 444, 141, 25, $WS_GROUP)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x800000)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$TabSheet2 = GUICtrlCreateTabItem("Pobrane")
$Edit2 = GUICtrlCreateEdit("", 6, 30, 767, 479,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
GUICtrlCreateTabItem("")
$TabSheet3 = GUICtrlCreateTabItem("Widok w czasie rzeczywistym")
$Edit4 = GUICtrlCreateEdit("", 9, 30, 767, 479)
$Edit5 = GUICtrlCreateEdit("", 783, 189, 311, 188)
$Input5 = GUICtrlCreateInput("", 783, 381, 235, 21)
$Button7 = GUICtrlCreateButton("Wyslij", 1020, 378, 75, 25, $WS_GROUP)
$Group5 = GUICtrlCreateGroup("Lista dostępnych użytkowników", 783, 24, 311, 162)
$List2 = GUICtrlCreateList("", 789, 45, 298, 136)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Radio3 = GUICtrlCreateRadio("Ukryj mnie przed podglądem", 780, 435, 194, 17)
$Radio4 = GUICtrlCreateRadio("Zezwalaj na podgląd mojego kodu", 780, 417, 194, 17)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_GUICtrlRichEdit_SetFont($rich , 11)

;Dim $k[1][2] = [ ["{ENTER}",$button2] ]
;GUISetAccelerators($k)

TCPStartup()

$ciag='0'
$iptcp=''
$porttcp='1234'
$blokada=0
$socket=0
$aktywny_online=0


dim $id[27]=['ă','ö','ŕ','š','é','á','‡','©','Ŕ','Ü','ň','ű','ý','ˇ','×','«','°','Ű','¬','Ţ','¤','Ş','µ','Ľ','ţ','ľ'] ;sie kurwa pogubilem


AdlibRegister("guard",1000)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $button1
polacz()
case $button2
wyslij()
case $button3
backupwyslijnaserwer()
case $button4
TCPSend($socket,$id[10]&GUICtrlRead($list3)&$id[11])
case $button5
dodajdolisty()
case $button6
usunzlisty()
case $list2
AdlibUnRegister("prosba")
$aktywny_online=GUICtrlRead($list2)
AdlibRegister("prosba",50)
case $tab1
if GUICtrlRead($tab1)<>0 then
Global $zapas=_GUICtrlRichEdit_GetText($rich)
_GUICtrlRichEdit_Destroy($rich)
EndIf

if GUICtrlRead($tab1)=0 then
ConsoleWrite("AAA")
$rich=_GUICtrlRichEdit_Create($form1_1,'',9, 27, 701, 572,BitOR($ES_WANTRETURN, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
_GUICtrlRichEdit_SetText($rich,$zapas)

EndIf


EndSwitch
if $blokada=1 Then nasluch()
_GUICtrlEdit_Scroll($Edit3, $SB_SCROLLCARET)

if GUICtrlRead($label2) <> $ciag then
GUICtrlSetColor($label2,default)
$ciag=guictrlread($label2)
EndIf


WEnd



func polacz()
Global $nick=GUICtrlRead($input3)
Global $iptcp=GUICtrlRead($input2)
if $nick='' then
MsgBox(0,'',"Wpisz nick!")
Return
EndIf
for $i=0 to 5 step 1
Global $Socket = TCPConnect($IPTCP,$porttcp)
TCPSend($socket,$nick)
If $Socket <> -1 Then
$status='Polaczono'
ExitLoop
EndIf

TCPCloseSocket($Socket)
msgbox(0,"","Błąd połączenia")
Next
ConsoleWrite("polaczono")
GUICtrlSetData($label2,$Status)
$blokada=1

if IniRead("konfiguracja.ini",'opcje','nazwa',$nick)<>0 then
TCPSend($socket,$id[18]&IniRead("konfiguracja.ini",'opcje','nazwa',$nick)&$id[19])
EndIf
EndFunc

func nasluch()
$Recv = TCPRecv($Socket, 10000000)

if $recv<>"" Then
$sprawdz_id=StringRegExp($recv,$id[0])
$sprawdz_id2=StringRegExp($recv,$id[6]);prosba do serwera o plik
$sprawdz_id3=StringRegExp($recv,$id[2]);lista plikow na serwerze
$sprawdz_id4=StringRegExp($recv,$id[4])
$sprawdz_id5=StringRegExp($recv,$id[14]);to odebrane zadania
$sprawdz_id6=StringRegExp($recv,$id[24])
$sprawdz_id7=StringRegExp($recv,$id[20])
$sprawdz_id8=StringRegExp($recv,$id[8])

if $sprawdz_id=1 then
$zwroc=_StringBetween($recv,$id[0],$id[1])
$dlzwroc=StringLen($zwroc[0])
$nickdl=StringLen($nick)
$granica=45
guictrlsetdata($edit3,GUICtrlRead($edit3)&$zwroc[0]&@CRLF)
;~ if $dlzwroc+10+$nickdl>$granica then
;~ $str1=stringTrimLeft($zwroc[0],$granica)
;~ $str2=StringTrimRight($zwroc[0],$dlzwroc-$granica)
;~ $wyjscie=$str1&@CRLF&$str2
;~ guictrlsetdata($edit3,GUICtrlRead($edit3)&$wyjscie&@CRLF)
;~ EndIf

gUICtrlSendMsg($edit3, $WM_VSCROLL, $SB_LINEDOWN, 0)
EndIf

if $sprawdz_id2=1 then
$zawartosc=_StringBetween($recv,$id[6],$id[7])
guictrlsetdata($edit2,"")
guictrlsetdata($edit2,$zawartosc[0])
status('Edit pobrano i wymieniono!' )
EndIf


if $sprawdz_id3=1 then
$pliki=_StringBetween($recv,$id[2],$id[3])
GUICtrlSetData($list3,"")
GUICtrlSetData($list3,$pliki[0])
EndIf

if $sprawdz_id4=1 then
$update=_StringBetween($recv,$id[4],$id[5])
ConsoleWrite($update[0])
GUICtrlSetData($label2,$update[0])
GUICtrlSetColor($label2,0x0D9A00)
$ciag=$update[0]
EndIf

if $sprawdz_id5=1 then
$data=_StringBetween($recv,$id[14],$id[15])
GUICtrlSetData($list1,"")
FileWrite("zadaniakopia.txt",$data[0])
$linie=_FileCountLines('zadaniakopia.txt')
for $i=0 to $linie step 1
GUICtrlSetData($list1,FileReadLine('zadaniakopia.txt',$i))
Next
FileDelete("zadaniakopia.txt")
EndIf

if $sprawdz_id6=1 then ;lista polaczonych IP z serwera
$data=_StringBetween($recv,$id[24],$id[25])
GUICtrlSetData($list2,'')
GUICtrlSetData($list2,$data[0])
EndIf

if $sprawdz_id7=1 then ;prosba o plik .pojedynczy znak!
$plik=_GUICtrlRichEdit_GetText($rich)
TCPSend($socket,$id[22]&$plik&$id[23])
EndIf

if $sprawdz_id8=1 then ;otrzymanie pliku o ktory prosilem
$data=_StringBetween($recv,$id[8],$id[9])
GUICtrlSetData($edit4,$data[0])
EndIf








EndIf
EndFunc

func wyslij()
if $socket=0 or $socket=-1 then
MsgBox(0,'','Brak połączenia z serwerem!')
Return
EndIf

$wiadomosc = GUICtrlRead ($input1)
If $wiadomosc = ' ' Then
MsgBox(0,'','Wpisz wiadomość!')
Return
endif
TCPSend($Socket,$id[0]&"["&@HOUR&":"&@MIN&":"&@SEC&"]"&" "&$nick & ": " & $wiadomosc&$id[1])
GUICtrlSetData($input1," ")
EndFunc


func backupwyslijnaserwer()
if FileExists("konfiguracja.ini")=0 then
$input=InputBox("Nazwa dla plików","Wpisz nazwę pod ktorą będziesz zapisywał pliki na serwerze, aby ponownie ją wybrać edytuj pliki konfiguracja.ini , sekcja opcje, klucz nazwa")
IniWrite("konfiguracja.ini","opcje","nazwa",$input)
EndIf

TCPSend($socket,$id[18]&IniRead("konfiguracja.ini",'opcje','nazwa',$nick)&$id[19])

if GUICtrlRead($radio1)=$GUI_CHecked Then
TCPSend($socket,$id[12]&"1"&$id[13])
ElseIf GUICtrlRead($radio2)=$GUI_CHecked then
TCPSend($socket,$id[12]&"2"&$id[13])
EndIf

for $timewaitforserwer=0 to 100 step 1
Sleep(1)
status("Oczekiwanie na odpowiedź serwera: "&$timewaitforserwer&"/100%")
Next

if GUICtrlRead($radio1)=$GUI_CHECKED or GUICtrlRead($radio2)=$GUI_CHECKED Then
TCPSend($socket,$id[8]&_GUICtrlRichEdit_GetText($rich)&$id[9])

if guard()<>0 or guard()<>-1 then
status('BackUP wysłano! ')
else
status('Brak połączenia')
EndIf
Else
MsgBox(0,'',"Nie można wysłać pliku!"&@CRLF&"Proszę zaznacz opcję zapisu po lewej")
EndIf

EndFunc



func status($x)
GUICtrlSetData($label2,$x)
EndFunc

func guard()
if $blokada=1 and TCPSend($socket," ")=0 then
GUICtrlSetData($label2,"Zerwano połączenie!")
Return False
EndIf
EndFunc

func usunzlisty()
$zaznaczony=GUICtrlRead($list1)
if guard()<>0 or guard()<>-1 then
TCPSend($socket,$id[16]&$zaznaczony&$id[17])
EndIf
EndFunc

func dodajdolisty()
$dodaj=GUICtrlRead($input4)
if $dodaj<>"" then
if guard()<>0 or guard()<>-1 then
TCPSend($socket,$id[14]&$dodaj&$id[15])
EndIf
EndIf
EndFunc

func prosba($aktywny)
if guard()<>0 or guard()<>-1 and $aktywny_online>0 then
TCPSend($socket,$id[20]&$aktywny_online&$id[21])
EndIf
EndFunc



func auto()
Send("{SPACE}")
ProgressOn("Kolorowanie Składni",'')

if IniRead("konfiguracja.ini","Kolorowanie","glownefunkcjeautoit",0)=1 then
for $i=1 to _FileCountLines("Skladnia\blue.txt")
if FileReadLine($blue,$i)<>" " then
koloruj(FileReadLine($blue,$i),"0xff0000")
EndIf
ProgressSet($i&"/"&_FileCountLines("Skladnia\blue.txt"),$i&"/"&_FileCountLines("Skladnia\blue.txt")& " (KROK 1)")
Next
EndIf

if IniRead("konfiguracja.ini","Kolorowanie","funkcjeuzytkownika",0)=1 then
for $i=1 to _FileCountLines('Skladnia\jblue.txt')
if FileReadLine($jblue,$i)<>" " then
koloruj(FileReadLine($jblue,$i),'0xffff00')
EndIf
ProgressSet($i&"/"&_FileCountLines("Skladnia\jblue.txt"),$i&"/"&_FileCountLines("Skladnia\jblue.txt")& " (KROK 2)")
Next
EndIf

if IniRead("konfiguracja.ini","Kolorowanie","liczby",0)=1 then
for $i=1 to _FileCountLines('Skladnia\fiolet.txt')
if FileReadLine($fiolet,$i)<>" " then
koloruj(FileReadLine($fiolet,$i),'0xcc0099')
EndIf
ProgressSet($i&"/"&_FileCountLines("Skladnia\fiolet.txt"),$i&"/"&_FileCountLines("Skladnia\fiolet.txt")& " (KROK 3)")
Next
EndIf

if IniRead("konfiguracja.ini","Kolorowanie","interpunkcja",0)=1 then
for $i=1 to _FileCountLines('Skladnia\red.txt')
if FileReadLine($red,$i)<>" " then
koloruj(FileReadLine($red,$i),"0x9ff")
EndIf
ProgressSet($i&"/"&_FileCountLines("Skladnia\red.txt"),$i&"/"&_FileCountLines("Skladnia\red.txt")& " (KROK 4)")
Next
EndIf


ProgressSet("100%")
ProgressOff()


_GUICtrlRichEdit_Deselect($rich)
_GUICtrlRichEdit_SetSel($rich,StringLen(_GUICtrlRichEdit_GetText($rich)),StringLen(_GUICtrlRichEdit_GetText($rich)))
if _GUICtrlRichEdit_IsTextSelected($rich)=1 then
_GUICtrlRichEdit_SetCharColor($rich,Default)
_GUICtrlRichEdit_Deselect($rich)
EndIf
EndFunc

func koloruj($string,$kolor='304050')
$kod=_GUICtrlRichEdit_GetText($rich)
$dlstr=StringLen($string)
if StringRegExp($kod,$string)=1 then
while true
$pozycja=stringinstr($kod, $string, '', $i+1)
if not $pozycja then exitloop
$tablica[$i]=$pozycja
$i+=1
wend
$i=0
for $i=0 to _ArrayMax($tablica,0,0)-1
$poz=$tablica[$i]
if $poz=$tablica[_ArrayMax($tablica,0,0)] then
_GUICtrlRichEdit_Deselect($rich)
Return
EndIf
_GUICtrlRichEdit_SetSel($rich,$poz-1,$poz+$dlstr-1)
if _GUICtrlRichEdit_IsTextSelected($rich)=1 then
_GUICtrlRichEdit_SetCharColor($rich,$kolor)
_GUICtrlRichEdit_Deselect($rich)
EndIf
Next
EndIf


EndFunc



func wyjscie()
_GUICtrlRichEdit_Destroy($rich)
EndFunc



 

 

A oto serwer:

#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#Include <Array.au3>
#Include <string.au3>
#Include <file.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Serwer PiszmyToRazem", 320, 174)
$List1 = GUICtrlCreateList("", 10, 3, 295, 162)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


TCPStartup ()
$tcplisten=TCPListen(@ipaddress4,1234)
$max=9

dim $przywilej[$max+1]
Dim $nicks[$max + 1][5]


For $0 = 0 To $max
$nicks[$0][0] = 0
$nicks[$0][2] = 0 ; 0 user 1 przywilej kodu
Next

dim $Kolejka[$max+1][2]
dim $id[27]=['ă','ö','ŕ','š','é','á','‡','©','Ŕ','Ü','ň','ű','ý','ˇ','×','«','°','Ű','¬','Ţ','¤','Ş','µ','Ľ','ţ','ľ'] ;sie kurwa pogubilem

$id0=$id[0]
$id1=$id[1]
$id2=$id[2]
$id3=$id[3]
$id4=$id[4]
$id5=$id[5]
$id6=$id[6]
$id7=$id[7]
$id8=$id[8]
$id9=$id[9]
;×čĺ‡+©S+.&v+4S+!24*4$°D8ô«!¦-~ŘđÁöfb68¦˙ŰRR2

if FileExists("BackUP")=false Then DirCreate("BackUP")
if FileExists("zadania.txt")=false Then FileWrite("zadania.txt","")

AdlibRegister("plikiaktualnerefresh",20000)
AdlibRegister("zadaniaaktualnerefresh",5000)
AdlibRegister("lista",4000)
lista()
AdlibRegister("tresc",10)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $list1
for $i=1 to $max step 1
if GUICtrlRead($list1)=$nicks[$i][1] then
GUICtrlSetData($label2,$nicks[$i][2])
EndIf
Next

EndSwitch
polaczenienasluch()
WEnd

func polaczenienasluch()
If $nicks[0][0] = $max Then Return ;jezeli polaczonych osob jest max liczba to przerwij funkcje
$Accept = TCPAccept($TCPListen)
If $Accept = -1 Then
Return
EndIf
For $0=1 To $max
If $nicks[$0][0] = 0 Then
$nick=TCPRecv($accept,7000)
$nicks[$0][0] = $Accept
$nicks[$0][1]=$nick
$nicks[0][0] += 1
GUICtrlSetData($list1,$nick&"|")
Return
EndIf
Next
Return
EndFunc

func tresc()

For $0 = 1 To $max
$wyslij = TCPRecv ($nicks[$0][0],7000)
if $wyslij <> "" Then
ConsoleWrite($wyslij)

if StringRegExp($wyslij,$id[0])=true then
$data=_StringBetween($wyslij,$id[0],$id[1])
wyswietl($data[0],$id[0],$id[1])
EndIf

if StringRegExp($wyslij,$id[8])=1 then ;jesli odbiera backup to go zapisuje do folderu z nickiem i godziną
$data=_StringBetween($wyslij,$id[8],$id[9])
if $przywilej[$0]=2 then
FileWrite("BackUP/"&$nicks[$0][3]&"_"&@HOUR &"."& @MIN &'.txt',$data[0])
wyswietl("Update: "&$nicks[$0][1]& " do wersji: "&$nicks[$0][3]&"_"&@HOUR &"."& @MIN,$id[4],$id[5])
plikiaktualnerefresh()
elseif $przywilej[$0]=1 then
FileDelete("BackUP/"&$nicks[$0][3]&'.txt')
FileWrite("BackUP/"&$nicks[$0][3]&'.txt',$data[0])
wyswietl("Update: "&$nicks[$0][1]& " do nowej pojedyńczej wersji!",$id[4],$id[5])
plikiaktualnerefresh()
EndIf
EndIf

if StringRegExp($wyslij,$id[10])=1 then
$data=_StringBetween($wyslij,$id[10],$id[11])
TCPSend($nicks[$0][0],$id[6]&fileread("BackUP/"&$data[0])&$id[7]) ;klient wysyla miedzy 10 a 11 plik ktory chce pobrać od serwera
plikiaktualnerefresh()
EndIf

if StringRegExp($wyslij,$id[12])=1 then
$data=_StringBetween($wyslij,$id[12],$id[13])
if $data[0]=1 then $przywilej[$0]=1
if $data[0]=2 then $przywilej[$0]=2
EndIf

if StringRegExp($wyslij,$id[14])=1 then
$data=_StringBetween($wyslij,$id[14],$id[15])
FileWrite("zadania.txt",$data[0]&@CRLF)
zadaniaaktualnerefresh()
EndIf

if StringRegExp($wyslij,$id[16])=1 then
$data=_StringBetween($wyslij,$id[16],$id[17])
$plik=FileRead("zadania.txt")
$odswiezone=StringRegExpReplace($plik,$data[0]," ")
FileDelete('zadania.txt')
FileWrite("zadania.txt",$odswiezone)
zadaniaaktualnerefresh()
EndIf

if StringRegExp($wyslij,$id[18])=1 then
$data=_StringBetween($wyslij,$id[18],$id[19])
$nicks[$0][3]=$data[0]
EndIf


if StringRegExp($wyslij,$id[22])=1 then
$data=_StringBetween($wyslij,$id[22],$id[23])
$doniego=$nicks[$0][4]
if $doniego>=0 Then
TCPSend($nicks[$doniego][0],$id[8]&$data[0]&$id[9])
EndIf
EndIf

if StringRegExp($wyslij,$id[20])=1 then
$data=_StringBetween($wyslij,$id[20],$id[21]);nick osoby od ktorej ma byc wyslany kod do osoby proszacej czyli [$0]
for $c=0 to $max
if $data[0]=$nicks[$c][1] then
$nicks[$0][4]=$c
TCPSend($nicks[$c][0],$id[20])
endif
Next
EndIf



EndIf
Next
EndFunc

func wyswietl($tekst,$d,$d2)
for $00 = 1 to $max
TCPSend ($nicks[$00][0], $d&$tekst&$d2 )
Next
$0 = 0
$00 = 0
Return
EndFunc


func prosba()
for $00 = 1 to $max
TCPSend ($nicks[$00][0], $id[4]&$nicks[$00][1]&$id[5])
Sleep(4000)
Next
$0 = 0
$00 = 0
Return


EndFunc



func test()
$nicks[2][2]=1
EndFunc


func plikiaktualnerefresh()
;niech wysyla miedzy 2 a 3
$tablica=_FileListToArray("BackUP")
$plikiwstringu=_ArrayToString($tablica)
ConsoleWrite($plikiwstringu)
for $i=0 to $max
TCPSend($nicks[$i][0],$id[2]&$plikiwstringu&$id[3])
Next

EndFunc


func zadaniaaktualnerefresh()
$zadanialista=FileRead("zadania.txt")
for $i=0 to $max
TCPSend($nicks[$i][0],$id[14]&$zadanialista&$id[15])
Next
EndFunc

func lista()
for $i=0 to $max
if $nicks[$i][1]<>"" then
FileWrite("nicks.txt",$nicks[$i][1]&"|")
EndIf
Next
for $i=0 to $max
TCPSend($nicks[$i][0],$id[24]&FileRead("nicks.txt")&$id[25])
Next
FileDelete("nicks.txt")
EndFunc

 

 

Podziękowania w pomocy i testowaniu dla Hfauy i Sopla :)

Aby przetestować należy być w jednej sieci :) Polecam Hamachi i programy jego pokroju stwarzające "sztuczne LAN" :)

 

 

DOWNLOAD:

 http://www.multiupload.nl/O3IWYHGTL4 

SKAN:

https://www.virustotal.com/file/80170ae0c30ca714ad9867f6efacb707fb97390f055f1ecb070cfbae59d9e894/analysis/1337616889/ 

 

+Dodano wersję testową kolorowania składni...ogólnie rzecz biorąc: powolne i czasem się myli ...gotdamn it!

Ale jakiś zarys jest :) Aby kolorowało składnię należy pobrać paczkę ponieważ znajdują się tam niezbędne pliki. Aby dodawać własne funkcję które program ma kolorować należy

otworzyć plik jblue.txt w folderze 'Skladnia' i dodać nazwę w nowej linni.

 

Dla przyspieszenia kolorowania polecam wyłączyć kolorowanie cyfr i funkcji dodatkowych a także interpunkcji czyli zostawić same wbudowane funkcje w autoit :)

Aby to zrobić otwieramy plik 'konfiguracja.ini' i wyłączamy zmieniając wartość na 0 .

 

Kolorowanie odpalamy ENDem, nie nie da się w czasie rzeczywistym bo richedit to czyste zło pod tym względem ...

 

+Dodano funkcję podglądu kodu, która na chwilę obecną działa jak chce i kiedy jej się podoba a najlepiej jak wgl nie działa :)

Prawdopodobnie zostanie usunięta,a najprawdopodobniejszą przyczyną jest duża ilość danych wpływająca na serwer w krótkim odcinku czasowym :) Ale czasami działa , szczególnie jak piszą dwie max.3 osoby ...

 

+Nowy download i source

Opublikowano

I działało, jak sprawdzaliśmy ;] Poprawiłeś wysokość okna? A z kolorowaniem sobie poradzisz, pisz na Hamachi ;)

Opublikowano

Dziękuję :)

Czy jest coś co można by dodać ? :)

 

EDIT: Update kodu klienta(DL nie zupdatowany), poprawiony bug na klawisz enter(przy wysylaniu wiadomosci trzeba klikac button póki co ,może uda mi się to naprawić ...) i dodana opcja nadawania nazwy plikowi na serwerze :)

Opublikowano

Ciekawe, dobrze, że to rozwijacie...

 

Mogłaby być jeszcze przedziałka do powiększania pola edytora + opcja full screen

(czasem brzydko wygląda, ale można zaradzić robiąc wartości procentowe tylko NIEKTÓRYCH elementów. (większość robi dla wszystkich))

 

Ciekawą rzeczą byłoby zamontowanie wycinka okna np. z notepada do edycji, lub kolorowanie składni

 

Kolejną rzeczą - nanoszenie poprawek w czasie rzeczywistym

 

Wiem, że owe rzeczy są niesamowicie trudne (bez przesady), ale jakby się wam nudziło, zawsze możecie porozwijać ^^

Oddajcie minusy! :(

Opublikowano

@UP kolorowanie ostatnio chciałem zrobić ale jakoś mnie to zirytowało i odłożyłem na potem :P

Co do powiększania pola edytora i fullscreen: kod jest zapisywany jako txt i tak tez przesylany przez odczyt pliku, nastepnie wklejany do edit'a . Co za tym idzie wszelkie rozszerzanie i pracowanie na rozmiarach innych niż osoba z która piszemy narobi nam burdelu w kodzie jak cholera ;)

 

Co miałeś na myśli nanoszenie poprawek w czasie rzeczywistym?

Opublikowano

Że jeżeli wpiszesz coś u siebie, automatycznie pojawi się to u wszystkich. może czasem irytować samoistne dochodzenie liter, ale przy dłuższym kodzie może być bardzo przydatne.

 

Wpadłem na kolejny pomysł - mianowicie robienie backupów ^^ to nie powinno być trudnę

(+ autozapis co 2 minuty, w razie crasha, etc)

Oddajcie minusy! :(

Opublikowano

Właściwie backupy robimy ręcznie zaznaczając "Twórz nowe pliki za każdym updatem" , wtedy jest plik zapisywany w formacie: wybrana+nazwa+pliku_godzina:minuta

W sumie mogę dodać checkboxa do automatycznego wrzucania kodu i niech go zapisuje w innym folderze z backupami automatycznymi :)

 

Co do pojawiania się na bieżąco liter problem polega na czasowym zgraniu. Tzn.: ja wprowadziłem do kodu "costam" i w tym czasie ktos wpisal w inne miejsce "aaa" . Wtedy wymienimy sie kodami i u niego zniknie jego "aaa" a u mnie zniknie "costam" chociaz pojawi sie aaa :P

Dlatego postanowiłem żeby pracować na plikach w folderze serwera :)

 

Ale wczoraj zacząłem robić funkcję do podglądu czyjegoś kodu na bieżąco (widzimy co pisze ,ale nie możemy ingerować w ten kod. W ten sposób będzie możliwa nauka np. tłumaczenie komuś jakiejś funkcji, bez wysyłania na serwer co chwila pliku), ale pogubiłem się w zmiennych i musiałem cofnąć wszystko do stanu początkowego :P Z kolei dziś nie mam za bardzo czasu jutro ważny sprawdzian :)

 

 

Gotowe :)

Jeszcze nie wklejam bo małe problemy przy logowaniu(dodaje 2 znaki do nicku jakims cudem), ale podglad online czyichś zmagań już działa ;P

Uff ;)

Opublikowano

Ale wczoraj zacząłem robić funkcję do podglądu czyjegoś kodu na bieżąco (widzimy co pisze ,ale nie możemy ingerować w ten kod. W ten sposób będzie możliwa nauka np. tłumaczenie komuś jakiejś funkcji, bez wysyłania na serwer co chwila pliku)

 

 

Dokładnie o to chodzi.

 

 

Właściwie backupy robimy ręcznie zaznaczając "Twórz nowe pliki za każdym updatem"

 

Chodzi, że np. samoistnie co 2 min się zapisze... czasem niektórzy zapominają wysłać plik na serwer, a prąd padnie, czy coś w tym stylu - cała praca przepada...

Oddajcie minusy! :(

Opublikowano

Dodane nowe funkcje ...

Ogólnie zawiodłem się na richedit, ale może komuś się spodoba :)

 

+Kolorowanie składni

+Podgląd online

 

Obie zbugowane chociaż ta pierwsza pod względem estetycznym ale działa a ta druga włącza się kiedy tylko się jej spodoba ;)

Opublikowano

Widzę że jednak miałeś niezłą ambicje na ten projekt i napisałeś to, gz ^^

Chcesz zarobić na własnym cheacie/bocie? Pisz na PM

Cracking, analiza programu/strony, boty (także web), cheaty

kwoh2cmd.png

Opublikowano

Dzięki Psycho :)

Ambicje duże i się udało...prawie ;)

A prawie bo richedit jest strasznie niedopracowany, właśnie Hfaua mi pokazał jeden błąd który myślałem ,że załatwiłem, ale okazuje się,że błąd jest po skompilowaniu a nie ma go przy odpaleniu F5 w Scite ...

Po prostu tragedia...chyba cofne wersje :)

Opublikowano

ten program powinien był wygrać tamten konkurs na najbradziej użyteczny program w AutoIt ^_^

Opublikowano
Opublikowano

@UP przeciez jest wbudowany :)

Przyjrzyj się chociażby screenowi ;)

 

@Down:

 

dziękuję :)

myślę ,że wrócę do tego i zrobie to ale najpierw nauka + doszkolenie sie w c++ i postaram się napisać serwer od nowa ,żeby to jakoś zoptymalizować ;)

Opublikowano

Wojtek, to jest zajebiste.

 

Gdyby ten podgląd live działał, byłoby jeszcze cudowniej.

Like :)

1352970251-U713459.png

By Maxiu
"Because limits, like fears, are often just an illusion"

Opublikowano

Oczywiście przydałoby się zrobić coś co "księgowałoby" te pliki na serwie, tzn. możliwość przywrócenia poprzednich wersji, porównanie zmian(tak jak na SVN, GIT etc.)

Cytat

 

Orientacja seksualna polega na tym, że jeden mężczyzna lubi blondynki, drugi szatynki, że jedna pani woli umięśnionych mężczyzn a inna chudych intelektualistów. Homoseksualizm nie jest orientacją jest chorobą za którą homoseksualiści nie ponoszą odpowiedzialności. Pewna grupa ludzi rodzi się upośledzona fizycznie, na przykład bez ręki ale czy to znaczy, że wszystkim zdrowym powinniśmy też obcinać ręce? Nie, powinniśmy zapewnić im protezy. Obowiązkiem państwa jest zapewnienie homoseksualistom, jak wszystkim upośledzonym fizycznie czy psychicznie profesjonalnej opieki medycznej.

Opublikowano

Podczas uploadu na serwer masz opcje do zaznaczenia "Pracuj na jednym pliku" i "Twórz nowe pliki za każdym razem" .Wybierasz drugą opcję i za każdym razem jest plik z nową godziną tzn. są to Twoje backupy ;)

 

@DOWN : W gotowcach masz gotowy komunikator i serwer zrobiony przez Jack'a :)

Opublikowano

Miałem na myśli zrobienie osobnego komunikatora, bo ostatnio widziałem i nie ma komunikatorów w autoit (na forum 1).

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...